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