php交叉编译带openssl,openssl的Linux编译与交叉编译-Go语言中文社区

本文详细介绍了如何在CentOS 7.4环境下编译安装OpenSSL,包括普通编译和交叉编译。通过配置参数如--prefix、-fPIC、no-shared等,可以选择安装路径、生成静态库,并指定交叉编译器。编译完成后,将在指定目录下生成头文件和静态库文件,可用于后续的软件开发。
摘要由CSDN通过智能技术生成

目录

一、下载源码

二、编译安装

注意:本人所述都是基于:CentOS Linux release 7.4 的操作,其它发行版本不保证一样!

解压源码后,进入解压后的路径,如:cd openssl-1.0.2o,按如下步骤执行命令:

普通编译安装

./config --prefix=/home/yourInstallPath/x86 -fPIC no-shared no-asm

make -j10 && make install

交叉编译安装

./config --prefix=/home/yourInstallPath/x3399 -fPIC no-shared no-asm --cross-compile-prefix=aarch64-linux-gnu-

打开./config 生成的Makefile,将-m64选项全部删除掉,一共有两处,如果在x86机器进行交叉编译,不删除会报错。

make -j10 && make install

参数解释

--prefix 表示自定义安装路径,如果想安装在默认路径下,可以不使用这个参数;

-fPIC作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),  则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的;

no-shared 表示不生成动态库,只生成静态库,如果想生成动态库使用shared参数(默认应该也是动态库)。no-asm  表示:Do not use assembler code。

--cross-compile-prefix 表示指定交叉编译器,需要提前安装配置好自己需要的交叉编译器。

注意事项

-cross-compile-prefix指定的编译器不是全称,比如我想使用的是aarch64-linux-gnu-gcc,但是执行交叉编译命令时,填写的是aarch64-linux-gnu-,后面的gcc不用写,会自动识别。

上面命令中的yourInstallPath替换成自己想要安装的路径。

如果普通编译和交叉编译先后进行,最好前一种编译后删除源码,再次解压后再进行后一种编译,或者分别解压两次到不同的路径后分别执行不同的编译,因为我遇到过在同一个路径下先编译x86的,完成后make clean,再编译arm的aarch64,会报错一种:error adding symbols: File in wrong format的错误。

三、安装成功示例

0fa650e7d5f7d172a616b25521b9bb8c.png

从图中可以看出,指定安装路径下的include下生成了头文件,lib下生成了 libcrypto.a 和 libssl.a 两个静态库文件,这样就可以把库文件和头文件应用到自己的工程中去了!

四、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值