关于openssl的交叉编译
程序员文章站
2023-04-07 16:22:19
最近有个项目用到openssl,于是去openssl的官方网站上下载了最新的版本,v1.1.1b版本。 解压之后,发现配置编译,可以使用./config或者./Configure来完成。 网上也查了一些交叉编译的说明,经常在config之后,还要手动的修改makefile才行。这种就对我这种需要维护 ......
最近有个项目用到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时的文件输出目录
如此一来,终于能够编译通过了。下一步,测试运行看看是否有问题吧!
推荐阅读
-
arm交叉编译器的常用工具集简介
-
关于在linux交叉编译出适用于树莓派ARM架构的可执行程序
-
关于openssl的交叉编译
-
关于不同编译器下C语言中自加(++)运算符的解释
-
关于编译Android下可执行命令的FFmpeg实例讲解
-
不重新编译PHP为php增加openssl模块的方法
-
关于VUE的编译作用域及slot作用域插槽问题
-
php无需编译安装openssl扩展的实现方法
-
Linux内核编译时出现fatal error: openssl/opensslv.h: No such file or directory错误的解决办法
-
Linux内核编译时出现fatal error: openssl/opensslv.h: No such file or directory错误的解决办法