说明:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
QQ 群 号:513683159 【相互学习】
内容来源:
openssl官网
wiki—openssl编译构建、OpenSSL库的交叉编译(arm和mips)
常规构建过程,根据需要可查看前篇添加编译选项。
Linux下构建过程
Step1.openssl下载
执行命令:git clone https://github.com/openssl/openssl.git
Step2.交叉编译器下载
根据自己主板下载对应交叉编译器。
Step3.运行配置文件
执行命令:./Configure no-asm shared --prefix=/usr/local/cross_compile --cross-compile-prefix=/home/xsndz/Desktop/arm-openwrt-linux/bin/arm-openwrt-linux- --openssldir=/usr/local/cross_compile/ssl '-Wl,-rpath,/etc/libs'
结果:生成Makefile文件
选项说明:(根据实际情况选择并修改对应参数)
①no-asm
:不使用汇编程序加速编译过程,因为汇编程序对arm格式不支持。
②shared
:即生成静态库也生成动态库,no-share
不生成动态库,仅有静态库
③--prefix=
:指定OpenSSL安装的顶部目录
④--openssldir=
:指定OpenSSL配置文件的目录,以及默认的证书和密钥存储库
⑤--cross-compile-prefix=
:指定交叉工具链,添加指定的前缀到binutils组件。若为相对路径,需配置对应的环境变量。
⑥'-Wl,-rpath,/etc/libs'
:指定链接器运行时查找库的路径。
Step4.查看并修改Mafile文件
1. PLATFOR= linux-x86_64修改为arm
2. 删除-m64编译选项 可通过/m64进行查找
Step5.编译
执行命令:make -j8
结果:生成crypto、ssl的静态库和动态库、apps中生成openssl可执行文件等。
Step6.查看可执行文件是否格式正确
进入apps文件夹下,执行命令:readelf -h openssl
可查看Machine: ARM
为刚才设置的arm平台
Step7.将动态库与可执行文件传入主板中
根据实际情况传入对应主板的文件路径。
动态库:libssl.so.3
、libcrypto.so.3
可执行文件:openssl
根据实际情况可使用软链接来指定动态库使之兼容。
Step8.运行可执行文件
若前面设置了'-Wl,-rpath,/etc/libs'
选项,则可执行运行可执行文件。
若未设置,可能会没找到对应的文件可通过配置环境变量使之找到动态库,如:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/etc/libs
Step9.openssl的帮助选项
可查看openssl的命令,可执行:./openssl -help
Step10.查看版本
./openssl version
OpenSSL 3.1.0-dev (Library: OpenSSL 3.1.0-dev )
其他自行测试
其他选择
1️⃣交叉编译器的其他设置方法:
(1)Step3.中--cross-compile-prefix=/home/xsndz/Desktop/arm-openwrt-linux/bin/arm-openwrt-linux-
可修改为--cross-compile-prefix=arm-openwrt-linux-
前提是:虚拟机需配置对应的环境变量,如:export PATH=$PATH:/home/xsndz/Desktop/arm-openwrt-linux/bin/
,
环境变量设置有多种方法这边不做介绍,目的就是为编译器能够在执行时找到对应的软件包。
(2)也可在配置时,直接通过编译参数传入CC、CXX等
脚本的环境变量,设置交叉编译器的相关选项。
其他可查看openssl篇——3.编译构建相关描述了解更多构建信息