一、前言
项目需要将openssl三方库编译成在arm板子上能跑的AArch64格式,踩了一些坑,做个笔记一来方便以后忘记查阅,二是希望能帮助其他小伙伴能少走些弯路。
二、源码下载
https://www.openssl.org/source 官网下载所需源码版本。
解压完目录内容如下,版本不同可能有略微差异
三、编译
笔者编译环境为Ubuntu18.04虚拟机环境,因项目上安装过许多其他的三方库,并不能保证你按照下述操作步骤一定能够编译通过。
1、X86版本
./config
make -j4
make install DESTDIR=/home/hce/workspace/openssl
X86版本编译过程非常顺利,安装完毕后,在/home/hce/workspace/openssl/usr/local
中可以看到头文件和库的文件夹,在lib中可以看到.a和.so的库都编译出来了,使用 readelf -h libssl.a 或者 readelf -h libssl.so 指令看库的运行平台。
2、ARM版本
编译前记得将x86的版本删除 make clean , install路径里的直接删掉
2.1、交叉编译工具环境变量配置
编译ARM版本前首先检查你的交叉编译工具链路径是否在环境变量里面,需要注意要指定到gcc g++的上层,通过echo $PATH指令查看,例如我的工具链是
/home/tools/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
就把/home/tools/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
路径加到环境变量
export PATH=$PATH:/home/tools/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
验证是否成功可以在当前终端输入交叉编译的gcc 按tab看是否能够补全,如果可以说明添加是正常的
关于环境变量的配置请参考此文:https://blog.csdn.net/weixin_48896613/article/details/127170565
2.2、openssl配置
打开config文件,添加一句
2.3、编译
./config --cross-compile-prefix=aarch64-none-linux-gnu-
make -j4
make install DESTDIR=/home/hce/workspace/openssl
此处 --cross-compile-prefix= 后面的参数为你的交叉编译工具的前缀
使用和x86相同的方式看编译出的.a .so库
至此,交叉编译成功。
四、总结
openssl交叉编译配置总体还是比较简单的三方库,配置好交叉编译工具的环境变量和config文件一路畅通无阻,希望本篇内容对你有些帮助。