最后更新日期:2010-9-11
作者:Kagula
环境:Ubuntu8.04.1 + arm-linux-gcc-4.3.2
本文主要内容:Zlib、OpenSSL、OpenSSH、CTorrent交叉编译。
Zlib交叉编译
#zlib版本1.2.5
#./configure --shared
#make LDSHARED="arm-linux-gcc -shared -Wl,-soname,libz.so.1" CC_FOR_BUILD="arm-linux-gcc" CC="arm-linux-gcc" LD="arm-linux-ld" CPP="arm-linux-g++ -E" AR="arm-linux-ar rc" prefix="/usr/local/arm/4.3.2" CFLAGS="-fPIC" libz.so.1.2.5 libz.a
#拷贝zconf.h zlib.h到/home/kagula/arm432/include/
#拷贝 libz* 到/home/kagula/arm432/lib/
#原文http://blog.csdn.net/x uxinshao/archive/2008/01/24/2063876.aspx
备注:应该把上面prefix参数的值改一下,后来手动安装就算了。
OpenSSL交叉编译
#openssl版本0.9.8o
方式一:生成静态库
# ./config --prefix=/home/kagula/arm432 no-asm shared os/compiler:arm-linux-gcc
修改MakeFile文件中的以下变量
EX_LIBS= -ldl
AR= arm-linux-ar $(ARFLAGS) r
ARD=arm-linux-ar $(ARFLAGS) d
RANLIB= arm-linux-ranlib
#Make
#Make install
生成libssl.a libcrytpo.a (这两个库的使用顺序不能颠倒)
备注:【1】使用os/compiler选项会导致shared参数不起作用,即只能生成静态库【2】如果刚编译成x86版本的,编译成arm版本之前记得要make clean下清除掉x86版本的目标文件。
方式二:生成动态库
#CC=arm-linux-gcc ./config no-asm shared --prefix=/home/kagula/arm432
如上修改MakeFile文件中的变量
#Make
#Make install
在安装目录就会看到libssl.so及libcrypto.so相关文件
OpenSSH交叉编译
#openSSH版本4.7.p1
#./configure --host=arm-linux --with-libs --with-zlib=/home/kagula/arm432 --with-ssl-dir=/home/kagula/arm432 --disable-etc-default-login CC=arm-linux-gcc LD=arm-linux-ld AR=arm-linux-ar --prefix=/home/kagula/arm432
#make
#若make install会出现strip出错,参考“参考资料[1]”完成OpenSSH的安装,建议使用make install –i命令
备注:
[1]若你开发机OS中的Vmware上的GuestOS网卡必须改为“Bridge”,否则Arm板无法访问你开发机中的VMware中的GuestOS。
[2]arm9板使用kagula帐号远程连接SSH服务器(192.168.0.171)
#./ssh –l kagula 192.168.0.171
[3]装在arm432目录下的OpenSSH得使用Chmod命令使之可执行,然后参考“参考资料[2]”让OpenSSH服务跑起来。期间可能要求你新增一个SSH帐号,使用adduser命令即可。
CTorrent交叉编译
#CTorrent版本dnh3.3.2
#CC=arm-linux-gcc CXX=arm-linux-g++ ./configure --host=arm-linux --prefix=/home/kagula/arm432 --with-ssl=/home/kagula/arm432
#make
#make install
CTorrent使用
[1]把/home/kagula/arm432目录打成包
#tar –zcvf arm432.gz arm432
[2]把arm432.gz下到arm9开发板
#ftp 192.168.0.101
ftp>binary
ftp>put arm432.gz
bye
[3]在开发板/home/kagula目录下解压arm432.gz包
#tar –zxvf arm432.gz
[4]修改arm9板上的/etc/profile文件
PATH=/home/kagula/arm432/bin:$PATH
LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/home/kagula/arm432/lib
EXPORT LD_LIBRARY_PATH
[5]重启开发板后就可以在任意目录下运行ctorrent
参考资料
[1]《Openssh移植经验谈》
http://blog.csdn.net/dzassn/archive/2007/09/08/1776971.aspx
[2]《解决启动SSHD服务时报错》
http://firesk.blog.51cto.com/180373/46625