交叉编译openssl(arm和x86_64)

本文详细介绍了如何在Linux环境下,利用arm交叉编译器安装和配置OpenSSL,包括下载、解压交叉编译器,设置环境变量,修改Makefile以及编译和安装步骤。同时,也涵盖了本地编译OpenSSL的过程,强调了清理旧构建的重要性。
摘要由CSDN通过智能技术生成

一、安装arm的交叉编译器

1.下载

在这里插入图片描述

说明:
①按照交叉编译器的命名规则,需要的arm交叉编译器为:arm-xxx-linux-gnueabi,其中xxx可以是该交叉编译器的制作者,此处即linaro。
②下图是linaro的交叉编译器的命名规则:
在这里插入图片描述
交叉编译器也是程序,它运行的平台:x86_64 + linux(vmware下的ubuntu20.04LTS),编译openssl源码得到的二进制文件的运行平台:arm + linux(所以二进制格式为ELF

2.解压

在这里插入图片描述

3.添加环境变量

echo "PATH=$PATH:/home/forrest/CS/experimentBCSD/crossCompiler/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin" >> ~/.zshrc
source ~/.zshrc
在这里插入图片描述

注意:我装了zsh,有的小伙伴们可能还是bash,所以是~/.bashrc

4.验证

在这里插入图片描述

二、交叉编译:arm-linux-gnueabi-gcc 编译 openssl

1.配置

./config shared no-asm --prefix=/home/forrest/CS/experimentBCSD/targetProgram/openssl/openssl-1.1.1k/arm/gcc --openssldir=/home/forrest/CS/experimentBCSD/targetProgram/openssl-1.1.1k/ssl
在这里插入图片描述

2.修改Makefile

①填上CROSS_COMPILE的绝对路径
在这里插入图片描述

注意:末尾没有gcc!!!

②注释掉出现-m64的行

否则,可能出现如下错误:openssl error unrecognized command line option ‘-m64’
理由(猜测):因为此处的交叉编译器是32位的,但运行的平台却是64位的。

3.make

4.make install

我make和make install都很顺利。

三、本地编译:x86_64-linux-gnu 编译 openssl

1.配置

./config shared no-asm --prefix=/home/forrest/CS/experimentBCSD/targetProgram/openssl/openssl-1.1.1k/x86_64/gcc --openssldir=/home/forrest/CS/experimentBCSD/targetProgram/openssl-1.1.1k/ssl

2.make clean

否则会报错

3.make

4.make install

四、参考文档

1.【经验分享】linux交叉编译 - openssl动态库

以下是在 Ubuntu 18.04 操作系统下,使用 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 交叉编译 Qt 5.6.2 的流程: 1. 下载 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 工具链,并解压到某个目录下。 2. 安装 Qt 5.6.2 的依赖库: ``` sudo apt-get update sudo apt-get install build-essential perl python git sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxslt1-dev libgl1-mesa-dev libglu1-mesa-dev libsqlite3-dev libmysqlclient-dev libpq-dev libiodbc2-dev libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxrandr-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-ugly1.0-dev gstreamer1.0-libav gstreamer1.0-alsa gstreamer1.0-pulseaudio libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-ugly1.0-dev ``` 3. 下载 Qt 5.6.2 的源代码,并解压到某个目录下。 4. 进入 Qt 5.6.2 的源代码目录,执行以下命令: ``` ./configure -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=/path/to/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /path/to/sysroot -opensource -confirm-license -make libs -prefix /usr/local/qt5arm -no-xcb -no-pch -no-icu -no-gif -no-libjpeg -no-libpng -no-harfbuzz -no-openssl -no-qml-debug -nomake examples -nomake tests ``` 其中,/path/to/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 是 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 工具链的路径,/path/to/sysroot 是交叉编译环境的根文件系统路径。 5. 执行 make 命令进行编译: ``` make -j4 ``` 其中,-j4 表示使用 4 个线程进行编译。 6. 执行 make install 命令进行安装: ``` sudo make install ``` 7. 完成后,在 /usr/local/qt5arm 目录下会生成 Qt 5.6.2 的安装文件。把该目录添加到交叉编译环境的 PATH 环境变量中即可使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值