使用Padavan提供的toolchain编译Transmission之前,需要先编译以下几个依赖
- libevent http://libevent.org/
- curl https://curl.haxx.se/download.html
- zlib http://www.zlib.net/
- openssl https://www.openssl.org/source/
其中openssl使用1.1.0编译会报错,不知是什么原因,故使用1.0.2版本进行编译。也可以用polarssl代替openssl,但性能会有所损失。
编译libevent和curl,执行以下命令(toolchain目录自行修改):
./configure --host=mipsel-linux-uclibc --prefix=/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x
编译zlib,需用export CC=mipsel-linux-uclibc-gcc指定gcc编译器。
编译openssl,执行以下命令
编译openssl,执行以下命令
./Configure no-asm shared --prefix=/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x linux-mips32
然后手动修改Makefile,找到以下部分,按如下所示修改
CC= mipsel-linux-uclibc-gcc
AR= mipsel-linux-uclibc-ar $(ARFLAGS) r
RANLIB= mipsel-linux-uclibc-ranlib
NM= mipsel-linux-uclibc-nm
编译transmission,需要指定lib和include所在位置,执行以下命令
configure成功后,执行 make && make install,完成生成可执行文件。如果在make的时候出现"undefined reference to"错误,说明没有正确指定lib和include所在位置,执行make distclean,检查目录是否正确,然后重新configure。
生成的可执行文件体积非常大,用 mipsel-linux-uclibc-strip * 减小体积,可减小到450KB左右。
./configure OPENSSL_LIBS="-L/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/lib -lcrypto -lssl" OPENSSL_CFLAGS="-I/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/include/" LIBCURL_LIBS="-L/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/lib -lcurl " LIBCURL_CFLAGS="-I/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/include/" LIBEVENT_LIBS="-L/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/lib" LIBEVENT_CFLAGS="-I/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/include" --enable-lightweight --prefix='/opt/transmission-binaries/' --with-zlib=/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/ LDFLAGS="-L/opt/rt-n56u/toolchain-mipsel/toolchain-3.4.x/lib -levent -ldl" --disable-nls --without-gtk --host=mipsel-linux-uclibc
configure成功后,执行 make && make install,完成生成可执行文件。如果在make的时候出现"undefined reference to"错误,说明没有正确指定lib和include所在位置,执行make distclean,检查目录是否正确,然后重新configure。
生成的可执行文件体积非常大,用 mipsel-linux-uclibc-strip * 减小体积,可减小到450KB左右。
博主你好,我下载toolchains并./build之后,并没有找到mispel-linux-gcc,请问一下是什么原因,困扰我一段时间了。
回复删除谢谢
名称应该叫mipsel-linux-uclibc-gcc
删除