关于openssl的交叉编译

Posted djw316

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于openssl的交叉编译相关的知识,希望对你有一定的参考价值。

最近有个项目用到openssl,于是去openssl的官方网站上下载了最新的版本,v1.1.1b版本。

解压之后,发现配置编译,可以使用./config或者./Configure来完成。

网上也查了一些交叉编译的说明,经常在config之后,还要手动的修改makefile才行。这种就对我这种需要维护N种交叉编译环境的人来说,就比较头疼了。

按常理讲,openssl这种用途如此广的开源库,在交叉编译应该做得很好才对啊!

打开config脚本,查找了一下,其交叉编译是可以配置的,不需要配置之后,再手动改makefile啊!

./config no-asm shared --prefix=/home/xxx/git_base/openssl/release/himix100 CROSS_COMPILE=/opt/xxx/aarch64-himix100-linux/bin/aarch64-himix100-linux- CC=gcc

只要修改环境变量CROSS_COMPILE和CC,即可完成编译的配置。

但是接下来,进行hisiv500编译器的配置时,又遇到问题了。

其一是编译时,有很多告警,一看就是由于编译器是32位,但是代码中对位的操作却假定是64位,所以就会有可能溢出的告警

其二是,hisiv500编译器是不提供GNU C的ucontext库的,所以最后一些tools的链接会有问题。

继续查看config文件,没有找到如何配置系统的位宽。

这时,尝试常规的Configure --help,原来Configure里面是可以配置的。

./Configure linux-generic32 no-asm shared no-async --prefix=/home/xxx/git_base/openssl/release/hisiv500/ CROSS_COMPILE=/opt/xxx/arm-hisiv500-linux/bin/arm-hisiv500-linux-uclibcgnueabi- CC=gcc

no-async的作用是不使用GNU的ucontext库

linux-generic32表示是32位操作系统

--prefix表示istall时的文件输出目录

如此一来,终于能够编译通过了。下一步,测试运行看看是否有问题吧!

 

以上是关于关于openssl的交叉编译的主要内容,如果未能解决你的问题,请参考以下文章

在Linux下使用MinGW静态交叉编译带有zlib的libcurl(包括交叉编译openssl,即--cross-compile-prefix=i686-w64-mingw32- mingw)(代码

海思 himix200交叉编译openssl

关于Mac上交叉编译几个小问题,求解答

mips编译器交叉编译openssl

使用mingw 对libcURL,openSSL,zLib交叉编译

海思 himix200交叉编译openssl