CentOS 7 编译 arm版本 openssl

本文解决在CentOS7环境下为arm架构编译OpenSSL遇到的问题,包括配置arm交叉编译环境、修正Makefile文件以适配arm架构等步骤。

        今天在CentOS 7上编译一个arm版本的模块的时候,出现了一个找不到库的问题,如:

提示找不到两个库,ssl 和 crypto。因为我编译的是Arm版本的,之前没有安装过Arm版本的,现在只能重新编译安装一下了。

        下载openssl 源码,https://www.openssl.org/source/,我下载的是 openssl-1.1.1s.tar.gz ,下载完成后进行解压,然后我新建了一个安装的目录,然后切换到解压出来的目录下,配置 config,如我只执行以下操作:

./config no-asm CROSS_COMPILE=arm-himix200-linux- --prefix=/opt/arm-openssl

这里是配置了 arm 版本编译器,同时指定安装目录 /opt/arm-openssl,这个路径必须是绝对路径,否则会编译失败的,配置结果如下:

这样就配置了一个编译 arm 版本的 Makefile 出来了,如:

配置成功后就可以make直接编译了,但出现了一个错误:

这个arm版本不识别 -m64编译选项,这个是编译x86 64位库的,arm版本应该是没有这个选项。因为不知道怎么用 config 去掉,所以只能直接修改 Makefile 文件了:

如上只要去掉这两个 -m64 即可,其实只去掉 CNF_CFLAGS=-pthread -m64 这一行的 -m64 也可以的,因为 openssl 源码全部是c写的,这里应该只会用到 CNF_CFLAGS这个编译选项。去掉再 make 成功,然后就可以用 make install 安装了,这样会把编译好的so库(默认编译动态库)拷贝到之前 --prefix 指定的目录中,如:

到这一步已经编译及安装完成了,然后根据你自己的编译进行链接即可。我这里的编译链接并不是系统目录,而是指定的链接目录,所以我把 ssl 和 crypto 库拷贝到我的指定目录下,并且像上面一样创建了软链接,再编译我的模块:

我所需要的库也编译出来了。 

### 如何在 CentOS 7 上升级默认安装的 OpenSSL 版本 #### 准备工作 为了确保系统的稳定性和安全性,在执行任何更新操作之前,建议备份重要数据。 #### 获取当前 OpenSSL 版本 通过命令 `openssl version` 可查看当前已安装的 OpenSSL 版本[^1]。对于 CentOS 7,默认情况下该版本可能是较低的 1.0.x 或者其他旧版次。 #### 下载最新 OpenSSL 源码包 访问官方网站获取最新的 OpenSSL 发布版本,例如使用 wget 工具下载指定版本: ```bash wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz ``` 这一步骤能够获得更安全稳定的 OpenSSL版本文件。 #### 编译并安装新版本 OpenSSL 完成下载之后,解压缩 tarball 文件,并进入对应的目录内准备编译环境: ```bash tar -zxvf openssl-1.1.1c.tar.gz cd openssl-1.1.1c/ ``` 配置编译参数以及开始构建过程: ```bash ./config --prefix=/usr/local/openssl make && make install ``` 需要注意的是,在某些特定场景下可能还需要额外处理依赖关系等问题;另外,ARM 架构下的服务器可能会遇到不同的挑战[^2]。 #### 更新系统链接库路径 为了让整个操作系统识别新的 OpenSSL 安装位置,可以编辑 `/etc/profile.d/openssl.sh` 脚本来设置 LD_LIBRARY_PATH 环境变量指向 /usr/local/openssl/lib: ```bash echo 'export PATH=$PATH:/usr/local/openssl/bin' >> /etc/profile.d/openssl.sh source /etc/profile.d/openssl.sh ``` 同时也要记得创建必要的软连接来覆盖原有的 libssl 和 libcrypto 库文件: ```bash ln -sf /usr/local/openssl/lib/libssl.so.1.1 /lib64/libssl.so.10 ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /lib64/libcrypto.so.10 ``` 最后验证是否成功切换到了新版 OpenSSL : ```bash openssl version ``` 如果一切正常,则说明已经完成了对 CentOS 7 自带 OpenSSL 的升级操作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值