为64位ARMv8架构开发板交叉编译openssl-1.0.2l

来源:互联网 发布:网络售彩票最新消息 编辑:程序博客网 时间:2024/05/21 16:54

因科研实验需要,完成了针对64为ARM架构目标开发板的交叉编译,之前网上查询了一些方法,有些并不可行,且操作性与可读性都较差,这里给出自己亲手编译成功的过程。

本次编译的目标环境和编译环境如下:

目标环境:CPU为64位ARMv8的华为620开发板;

编译环境:Ubuntu14.04 LTS + aarch64-linux-gnu-gcc 4.8编译器。

编译器可以通过sudo apt-get install gcc-aarch64-linux-gnu下载安装最新版本,当前最新的openssl-1.0.2l可以从官网下载https://www.openssl.org/source/并解压,尽量下载最新的,杜绝之前的心脏滴血漏洞和其他小bug。

正式交叉编译与安装步骤如下:

1. 运行configure文件,在Linux终端openssl目录下输入如下命令运行configure文件:CC=aarch64-linux-gnu-gcc./config no-asm shared --prefix=/home/xiaot/armlib/openssl

其中参数./configno-asm shared--prefix=的含义为:

no-asm:在交叉编译过程中不使用汇编代码代码加速编译过程;

shared:生成动态链接库;

--prefix:指定生成lib、include、bin三个核心目录的路径,不修改此项则默认为OPENSSLDIR目录。

2.  ./configure执行完毕后,可以生成对应的makefile文件,其具体名称为openssl_Makefile,打开该文件,可以看到CC条目已经自动生成了对应的编译器名称,此时还需要对其它条目进行修改,主要修改条目包括ARRANLIBNM,将它们的内容由原始的gcc相关项修改为aarch64相关项,修改后核心内容如下:

CC= aarch64-linux-gnu-gccCFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -O3 -WallDEPFLAG= -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_LIBUNBOUND -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_SSL_TRACE -DOPENSSL_NO_SSL2 -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST -DOPENSSL_NO_WEAK_SSL_CIPHERSPEX_LIBS= EX_LIBS= -ldlEXE_EXT= ARFLAGS= AR= aarch64-linux-gnu-ar $(ARFLAGS) rRANLIB= aarch64-linux-gnu-ranlibRC= windresNM= aarch64-linux-gnu-nmPERL= /usr/bin/perlTAR= tarTARFLAGS= --no-recursionMAKEDEPPROG=makedependLIBDIR=lib

此外,还要把该文件中的所有-m64标记删除,正常情况下应该有两处,第一处在CC的编译选项处下面,第二处如下图,可以把SHARED_LDFLAGS=-m64一行注释掉。

修改完毕后,在终端输入make进行编译。

3.   编译成功完成后直接sudo make install即可,将安装到./configure时指定的目录。如下图:



4.  至此,已经完成了openssl的交叉编译工作,对于确认它是否成功make和make install的测试,可以编写测试程序交叉编译后在目标环境中运行,这部分内容将在下一篇博客中简单介绍。


原创粉丝点击