26个稳定版本 (6个主要版本)

使用旧的Rust 2015

47.13.0+0.4.7.x2023年2月10日
47.10.0+0.4.7.x2022年9月5日
47.8.0+0.4.7.x2022年6月28日
46.9.1+0.4.6.9 2022年1月18日
4.2.6-5+0.4.2.6 2020年3月8日

#29 in #zlib

Download history 868/week @ 2024-03-14 815/week @ 2024-03-21 723/week @ 2024-03-28 635/week @ 2024-04-04 1020/week @ 2024-04-11 911/week @ 2024-04-18 681/week @ 2024-04-25 861/week @ 2024-05-02 601/week @ 2024-05-09 685/week @ 2024-05-16 826/week @ 2024-05-23 892/week @ 2024-05-30 452/week @ 2024-06-06 643/week @ 2024-06-13 847/week @ 2024-06-20 648/week @ 2024-06-27

2,660 monthly downloads
5 个包中使用 (via libtor)

MIT 许可证

1.5MB
37K SLoC

C 33K SLoC // 0.2% comments Shell 1K SLoC // 0.2% comments M4 1K SLoC // 0.2% comments Python 596 SLoC // 0.3% comments Bitbake 512 SLoC // 0.1% comments Automake 370 SLoC // 0.1% comments Rust 289 SLoC // 0.1% comments Perl 40 SLoC // 0.1% comments Q 30 SLoC PHP 11 SLoC Lua 7 SLoC

libtor-sys 持续集成

此库将Tor及其一些依赖项(zlib、libevent和openssl)编译成一个单一的Rust库,可以像导入任何其他Rust包一样导入到现有项目中。这提供了一种使用Tor的方式,无需分发/下载额外的二进制文件 - 在允许运行它们的平台上 - 对于某些其他平台,如iOS和较新的Android版本,这是运行Tor的唯一方法,因为操作系统根本不允许执行二进制文件。

请注意,这里公开的接口非常非常“底层”(实际上是tor_api.h中存在的内容)。另一个将所有这些部分包装在漂亮的Rust接口中的包将单独发布。

默认情况下,此库仅与运行Tor所需的最小库集进行编译,即OpenSSL、Libevent和Zlib。可以使用 with-lzmawith-zstd 功能启用相应的压缩算法,并可以使用 vendored-lzmavendored-zstd 功能编译并像那些库一样静态编译,而不是使用系统提供的库。

支持的平台

目前支持的平台有

  • Linux(在Fedora 30和Ubuntu Xenial上测试过)
  • 通过NDK在Android上
  • MacOS
  • iOS
  • 通过Linux使用mingw从Linux交叉编译的Windows

即将推出™️

  • Windows(原生构建)

构建注意事项

CROSS_COMPILING.md 中提供跨平台交叉编译的命令示例。

Linux/macOS

在类似于UNIX的操作系统上构建不应该太难,通常使用cargo build应该可以正常工作。请记住,你需要在你的PATH中安装所有“通常”的构建工具,如编译器、automake、autoconf、make。在macOS上,你可以使用brew安装这些工具。

如果你遇到aclocal-1.15 not found或类似问题,尝试进入libevent-src目录并运行autoreconf --force --install。如果在tor-src中也遇到相同问题,重复该操作,然后重新cargo build

Android

为Android进行交叉编译相当简单,只需确保你的PATH中有NDK工具链。如果你这样做,cargo build将使用正确的编译器,针对你使用的NDK的最小支持SDK版本进行编译(通常是armv7为16,其他所有为21)。

iOS

在安装了Xcode Command Line Tools的Mac上为iOS进行交叉编译应该能够直接工作。

Windows (MingW)

使用MingW为Windows进行交叉编译也应该能够直接工作,只要你有正确的编译器和所需的库。要将库链接到二进制文件中,通常还需要安装libwinpthreads的静态版本。

依赖项

~1.1–2.8MB
~58K SLoC