CentOS 7 编译 arm版本 openssl

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

CentOS 7 编译 arm版本 openssl_第1张图片

提示找不到两个库,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,这个路径必须是绝对路径,否则会编译失败的,配置结果如下:

CentOS 7 编译 arm版本 openssl_第2张图片

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

CentOS 7 编译 arm版本 openssl_第3张图片

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

CentOS 7 编译 arm版本 openssl_第4张图片

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

CentOS 7 编译 arm版本 openssl_第5张图片

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

CentOS 7 编译 arm版本 openssl_第6张图片

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

CentOS 7 编译 arm版本 openssl_第7张图片我所需要的库也编译出来了。 

你可能感兴趣的:(Linux,linux)