交叉编译openssl1.1.1a
交叉编译openssl1.1.1a的时候遇到的问题,记录一下,方便下次查找
一、下载源码
1.打开openssl官网,下载openssl-1.1.1.tar.gz源码包。
2.执行下面的命令解压源码包:
$ tar xvzf openssl-1.1.1.tar.gz
二、配置openssl
1.执行下面的命令配置工程
$ ./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=arm-linux-
其参数说明如下:
no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程;
shared: 生成动态连接库。
no-async: 交叉编译工具链没有提供GNU C的ucontext库
–prefix=: 安装路径
–cross-compile-prefix=: 交叉编译工具
- 打开Makefile,删除里面所有的-m64和-m32编译选项。
三、编译
1.执行make编译工程;
2.执行make install,在源文件路径会生成一个install文件。
自己编译的时候使用的交叉编译工具链有点特殊,是在每次编译前运行一个shell来设置编译所需的环境变量(CC、CXX、AR等),这个时候编译可能会出问题,需要修改Makefile,注释以下几行:
#CC=$(CROSS_COMPILE)gcc #注释掉
#CXX=$(CROSS_COMPILE)g++ #注释掉
CPPFLAGS=
CFLAGS=-Wall -O3
CXXFLAGS=-Wall -O3
LDFLAGS=
EX_LIBS=
MAKEDEPEND=$(CROSS_COMPILE)gcc #不确定是否一定要注释掉,验证后再来说明
PERL=/usr/bin/perl
#AR=$(CROSS_COMPILE)ar #注释掉
ARFLAGS= r
RANLIB=$(CROSS_COMPILE)ranlib #不确定是否一定要注释掉,验证后再来说明
RC= $(CROSS_COMPILE)windres #不确定是否一定要注释掉,验证后再来说明
RCFLAGS=