arm平台Openssl交叉编译

前提条件

已安装arm-none-linux-gnueabi-gcc 4.8版本及以上

arm-linux-gcc 与 arm-none-linux区别

1)一般来说 arm-linux-gcc 是 arm-none-linux-gnueabi 的一个软链接。
可用 ls -l 命令查看链接对象,用 ls -i 命令查看 inode 数值。

2)arm-none-linux-gnueabi-gcc 只是告诉你支持eabi的功能,你当然也可以把这个名字改成arm-linux-gcc执行了,但是arm-linux-gcc的话是不可以直接改成arm-none-linux-gnueabi-gcc的,因为我们不知道arm-linux-gcc是什么形式的。

什么是EABI?
Embedded application binary interface, 即嵌入式应用二进制接口,是描述可连接目标代码,库目标代码,可执行文件映像,如何连接,执行和调试,以及目标代码生成过程,和c, c++语言接口的规范,是编译连接工具的基础规范,也是研究它们工作原理的基础,可惜arm的EABI迄今为止没有完全订好。作为EABI的组成部分有过程调用规范,可执行文件格式规范,c/c++ ABI规范和调试格式规范。

下载源码资源

下载 并 解压源码
点我下载

#进入源码目录
cd openssl-1.0.0/
#配置安装路径:/disk_4/mqtt/mosquitto-1.6.8/arm/ssl
./config no-asm shared --prefix=/disk_4/mqtt/mosquitto-1.6.8/arm/ssl
#配置一次性(关闭终端失效)交叉编译工具路径
export cross=arm-none-linux-gnueabi-
#修改Makefile文件 删除 -m64 相关字符串
gedit Makefile
#执行编译
make CC="${cross}gcc" AR="${cross}ar" RANLIB="${cross}ranlib"
#执行安装
make install

1.0.0可能还有与 perl5.18 不兼容。

解决方法:删除 pod2man文件 rm /usr/bin/pod2man
或者下载最新版本即可!
在这里插入图片描述

下载源码

#下载
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
#解压
tar -xvf openssl-1.1.1d.tar.gz
#进入源码目录
cd openssl-1.1.1d/
#配置安装路径:/disk_4/mqtt/mosquitto-1.6.8/arm/ssl
./config no-asm shared --prefix=/disk_4/mqtt/mosquitto-1.6.8/arm/ssl
#剩余步骤与上方类似,只是交叉编译工具指定不同
#修改Makefile文件 删除 -m64 相关字符串,指定交叉编译工具链
gedit Makefile
#make编译即可
make && make install
#查看编译后生成文件
cd /disk_4/mqtt/mosquitto-1.6.8/arm/ssl && ls

新版的交叉编译指定方式

修改makefile文件即可
并删除其中 -m64字符串
保存Makefile文件
make
在这里插入图片描述

更多指令查看

在这里插入图片描述
在这里插入图片描述

编译后效果

在这里插入图片描述
在这里插入图片描述
make && make install

错误

在这里插入图片描述
需要删除编译选项 -m64
打开Makefile文件
找到-m64删除即可
重新make && make install即可

fatal error: openssl/ssl.h: No such file or directory 找不到ssl.h

安装以下ssl库

sudo apt-get install libssl-dev
对于使用 OpenSSL 进行交叉编译,你需要在目标平台上配置交叉编译工具链,并确保正确设置相关的环境变量。以下是一个大致的步骤: 1. 下载 OpenSSL 的源代码:从 OpenSSL 的官方网站(https://www.openssl.org/)下载最新的源代码包,并将其解压到一个适当的目录。 2. 配置交叉编译工具链:根据你的目标平台,配置交叉编译工具链。这通常包括交叉编译器、交叉编译的库以及头文件等。确保工具链正确安装并可用。 3. 设置环境变量:根据你的交叉编译工具链,设置以下环境变量: - `CC`:指定交叉编译器的路径和名称。 - `CROSS_COMPILE`:如果需要,设置交叉编译前缀。例如,如果你的交叉编译器是 arm-linux-gcc,则设置为 `arm-linux-`。 - `AR`:指定交叉编译器的静态库归档程序的路径和名称。 - `RANLIB`:指定交叉编译器的静态库索引生成程序的路径和名称。 4. 运行配置脚本:在 OpenSSL 的源代码目录中,运行以下命令来配置 OpenSSL 的编译选项: ``` ./Configure <target> --prefix=<installation_path> --cross-compile-prefix=<cross_compile_prefix> ``` 其中 `<target>` 是要交叉编译的目标平台,`<installation_path>` 是安装 OpenSSL 的路径,`<cross_compile_prefix>` 是交叉编译前缀(如果有)。 5. 编译和安装:运行以下命令来编译和安装 OpenSSL: ``` make make install ``` 这将编译 OpenSSL 并安装到指定的安装路径中。 请注意,这只是一个大致的步骤概述,具体步骤可能因你的目标平台和工具链而有所不同。你还需要根据实际情况进行调整和解决可能出现的问题。请参考 OpenSSL 的官方文档以获得更多详细信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aron566

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值