交叉编译支持arm32位的Openssl
-
这里我用的是
openssl-3.0.12.tar.gz
版本 -
目的:交叉编译自己的项目时需要用到libcrypto.a 、 libssl.a 静态库,现有的静态库x86-64格式的,编译报错
接下来
交叉编译openssl
tar -xvf openssl-3.0.12.tar.gz
cd openssl-3.0.12/
/* 安装目录设为当前目录下的tmp,no-asm、shard的功能--阅读INSTALL.md */
./config no-asm shared --prefix=$PWD/tmp
vi Makefile
/CROSS_COMPILE /* 搜索、配置为自己的交叉编译工具链, 例:arm-linux- */
/-m64 /* 搜索-m64,将“-m64”删除 */
:wq /* 保存并退出Makefile */
make
make install
备注:
在make后已经在当前文件夹下生成了支持arm32的libcrypto.so、libssl.so
当然在make install之后生成的tmp目录下也有这两个库;
cd ./tmp/lib64
file ./* /* 查看支持属性 */
开发板
- 查看开发板是否支持openssl
openssl version -a
结果:
OpenSSL 1.1.1g 21 Apr 2020
built on: Fri Jul 23 12:06:57 2021 UTC
platform: linux-armv4
options: bn(64,32) rc4(char) des(long) idea(int) blowfish(ptr)
compiler: arm-buildroot-linux-gnueabihf-gcc -fPIC -pthread -Wa,--noexecstack -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DOPENSSL_THREADS -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DZLIB -DZLIB_SHARED -DNDEBUG -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
OPENSSLDIR: "/etc/ssl"
ENGINESDIR: "/usr/lib/engines-1.1"
Seeding source: os-specific
如果没有openssl,则需要将刚编译安装好的openssl移植到开发板上
如果没有openssl,则需要将刚编译安装好的openssl移植到开发板上
- 将./tmp目录下的bin文件、动态库文件根据自己的习惯,复制到相应的路径下