如何在arm编译 openssl1.0.0 的shared 库

本文详细介绍了在ARM平台上交叉编译OpenSSL库的方法,包括静态库和共享库的编译过程,以及如何替换默认的gcc编译器为arm-linux-gnueabihf-gcc,适用于嵌入式系统的开发需求。

最近在查arm平台上签名的问题, 遇到一个问题,需要openssl 的shared 库,竟然找不到交叉编译的方法

好不容易找了一个网站,上面有说到的,分享如下:

  1. static 库

./Configure no-asm --prefix=/home/gaowei/openssl  os/compiler:arm-linux-gnueabihf-gcc

 

vi Makefile

remove -m64

对于pc机是64bit的是去掉 -m64, 32bit 去掉-m32

make

make install

 

 

  1. shared 库

 

(1). /config shared --prefix=/home/gaowei/openssl no-asm

如果直接在上一个交叉编译shared库,会出现不支持的提示而自己动使用 no-shared参才替换

(2). vi Makefile

remove -m64

对于pc机是64bit的是去掉 -m64, 32bit 去掉-m32,  定义在这些CFLAGS & LIB_LDFLAGS中的

  1. 这里就是一个偷梁换柱的过程, 把PC上用的gcc 换成arm-linux-gnueabihf-gcc, 换成交叉工具链就可以了.

CROSS_COMPILE= /opt/arm-toolchan/bin

 

CC= $(CROSS_COMPILE)arm-linux-gnueabihf-gcc

AR=$(CROSS_COMPILE)arm-linux-gnueabihf-ar $(ARFLAGS) r

RANLIB= $(CROSS_COMPILE)arm-linux-gnueabihf-ranlib

MAKEDEPPROG= arm-linux-gnueabihf-gcc

 

  1. Complie and install OpenSSL

 

$ make

$ make install

参考:

https://shadowllife.wordpress.com/2018/05/03/how-to-cross-compile-openssl/

### 解决 IMX6ULL 系统中 `libssl.so.1.0.0` 共享对象文件找不到的问题 当遇到错误提示 `error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory` 时,这通常是因为 OpenSSL 未安装或路径配置不正确所致。 #### 方法一:更换相同版本的编译器并重新编译 如果项目中的不同使用了不同的编译器或版本差异较大,则可能导致此类问题。建议统一使用同一版本的编译器来重新编译整个项目[^1]。 #### 方法二:指定 OpenSSL 的根目录和包含目录 可以尝试通过 CMake 来设置 OpenSSL 的具体位置,在构建过程中显式指明其所在路径: ```bash cmake -DPAHO_WITH_SSL=ON \ -DOPENSSL_ROOT_DIR=/path/to/openssl-1.0.0s \ -DOPENSSL_INCLUDE_DIR=/path/to/openssl-1.0.0s/include .. ``` 这里的 `/path/to/openssl-1.0.0s` 需要替换为实际安装 OpenSSL 的绝对路径[^2]。 #### 方法三:手动复制文件到目标设备 对于嵌入式 Linux 设备如 IMX6ULL,可以直接将预编译好的 OpenSSL 复制过去,并确保这些能够被应用程序找到。操作如下: 1. 下载适合 ARM 架构的 OpenSSL 版本(例如 1.0.1u),解压缩后按照特定平台的要求进行交叉编译。 ```bash tar -vxf openssl-1.0.1u.tar.gz cd ~/alientek/tool/openssl-1.0.1u mkdir output setarch i386 ./config no-asm shared --prefix=/home/user/path/to/output make && make install ``` 2. 修改 Makefile 中的 `CROSS_COMPILE` 参数以便适应目标架构的需求[^4]。 3.编译完成后的上传至开发板上的适当位置,并将其链接添加到系统的标准搜索路径下: ```bash root@npi:/mnt# cp -r openssl/lib/* /lib/ ``` 4. 更新共享缓存以使更改生效: ```bash ldconfig ``` 以上措施应该能有效解决因缺少 `libssl.so.1.0.0` 而引发的应用程序启动失败问题[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值