我遇到了同样的问题,写了一本关于如何交叉编译openssl for arm的手册。我希望这本手册可以给你一些想法:
这个过程非常简单。在本手册中,我们将给出一个在 Ubuntu Linux 系统中交叉编译 OPENSSL for ARM 架构的示例。
- 交叉编译器
您将需要适用于 ARM 架构的 GNU C/C++ 编译器:
$ sudo apt-get install gcc-4.8-arm-linux-gnueabihf g++-4.8-arm-linux-gnueabihf
- openssl 源代码(1.1.1 版)
我们将构建的 openssl 位于https://github.com/openssl/openssl
$ git clone https://github.com/openssl/openssl.git
- 配置
导航到 openssl 文件夹,然后执行 ./configure,如下所示:
$ ./配置 linux-armv4 --prefix=/usr/local/openssl/ --openssldir=/usr/local/openssl 共享
此配置设置目标平台 linux-armv4,这是此 openssl 支持的唯一可用 ARM 平台。--prefix=/usr/local/openssl 告诉放置安装文件的位置。--openssldir=/usr/local/openssl 定义了 openssl 安装的根目录。shared 使编译器生成 .so 库文件。文件夹 openssl 下的文件 INSTALL 包含 ./Configure 的参数。
- 汇编
$ 使 CC=arm-linux-gnueabihf-gcc-4.8
CC 告诉使用什么交叉编译器。默认编译器是 gcc。
- 安装
$ 进行安装
- 输出
安装后会在/usr/local/openssl下找到以下文件和文件夹
$ ls /usr/local/openssl
垃圾桶
ct_log_list.cnf
包括
杂项
openssl.cnf.dist
共享证书
ct_log_list.cnf.dist
库
openssl.cnf
私人的
- 结尾
确保为 ARM 构建可执行二进制文件:
$文件/usr/local/openssl/bin/openssl
install-arm/bin/openssl:ELF 32 位 LSB 可执行文件,ARM,EABI5 版本 1 (SYSV),动态链接,解释器 /lib/ld-linux-armhf.so.3,用于 GNU/Linux 3.2.0,BuildID [sha1]=a23306c9c8bd553183fc20a37a60dcac8291da91,未剥离
如果您看到与上图类似的内容,则您已成功交叉编译了适用于 ARM 系统的 openssl。