查看全志A10的CPU信息可以看到全志A10属于armv7l
$ cat /proc/cpuinfo Processor : ARMv7 Processor rev 2 (v7l) BogoMIPS : 1001.88 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc08 CPU revision : 2 Hardware : sun4i Revision : 0000 Serial : 0000000000000000
编译工具链可以参考“Rust交叉编译ARM程序(Mac篇)”
构建完工具链就可以开始准备编译了,先下载程序,并设置一些初始变量
$ export OPENSSL_VERSION=1.0.1u $ wget https://www.openssl.org/source/old/1.0.1/openssl-$OPENSSL_VERSION.tar.gz $ tar -zxvf openssl-$OPENSSL_VERSION.tar.gz && cd openssl-$OPENSSL_VERSION
执行编译
$ export OPENSSL_INSTALL_PATH=/Users/jilili/Projects/build/armv7l/openssl-$OPENSSL_VERSION/ $ ./Configure -march=armv7-a -mfpu=vfpv3 -mfpu=neon --prefix=$OPENSSL_INSTALL_PATH --cross-compile-prefix=arm-linux-musleabi- no-asm shared linux-armv4 $ make -j4 $ make install
编译完成后就可以把程序发送到目标ARM主机
$ cd $OPENSSL_INSTALL_PATH/.. $ tar -zcvf openssl-1.0.1u.tgz openssl-1.0.1u/ $ scp openssl-1.0.1u.tgz ubuntu@192.168.3.148:/home/ubuntu/
由于采用的共享库,所以目前不能直接运行,需要将依赖的c运行时库(/lib/ld-musl-arm.so.1
)也放到对应的目录,可在如下地址下载编译好的musl库,请注意版本,我编译OpenSSL时用的是0.9.8版,下载ARM版musl时也要对应的班:
https://bitbucket.org/GregorR/musl-cross/downloads/
$ wget https://bitbucket.org/GregorR/musl-cross/downloads/crossx86-arm-linux-musleabi-0.9.8.tar.xz $ tar -zxvf crossx86-arm-linux-musleabi-0.9.8.tar.xz $ sudo cp arm-linux-musleabi/arm-linux-musleabi/lib/libc.so /lib/ld-musl-arm.so.1
完成后解压、执行就行了。
对了,你运行前还有将OpenSSL的共享库路径加入环境变量,或者拷贝库到/lib或/usr/lib或者/usr/lib/arm-linux-gnueabihf/目录
export LD_LIBRARY_PATH=/home/ubuntu/1.0.1u/lib