小沃最近开发了不少嵌入式linux的小程序,其中有个小工具需要用到openssl,下面小沃就来记录一下如何使用交叉编译工具编译嵌入式版本的openssl。
1.下载openssl源代码,下载地址如下:传送门
下面的教程以OpenSSL_1_1_1g版本为例。
2.将交叉编译器的路径添加到环境变量中去,比如您的交叉编译器路径为/root/toolchains/bin,就请执行:
export PATH=/root/toolchains/bin:$PATH
3.将交叉编译器的调用对象设置好环境变量,比如我们使用的编译器分别为mipsel-openwrt-linux-gcc,mipsel-openwrt-linux-ar,mipsel-openwrt-linux-g++,mipsel-openwrt-linux-ranlib,就需要运行:
export CC=mipsel-openwrt-linux-gcc export AR=mipsel-openwrt-linux-ar export CXX=mipsel-openwrt-linux-g++ export RANLIB=mipsel-openwrt-linux-ranlib
4.进入openssl根目录,运行./config no-asm --prefix=/root/toolchains,注意--prefix后面的参数建议与交叉编译器的路径一致。
注:如果不希望生成动态链接库,可以添加no-shared参数
如果出现如下错误提示,请添加no-async
5.通过文本编辑工具(比如vim,nano等)修改第4步生成的Makefile文件,去掉-m64这个字段。
6.然后就可以执行make && make install了。
7.最后就可以直接使用交叉编译器编译了,编译时添加-lssl -lcrypto参数即可。比如:
mipsel-openwrt-linux-gcc -o tlstunnel tlstunnel.c -lssl -lcrypto
如果第4步添加了no-shared,就会链接静态库,生成的二进制文件也会比较大。
文章作者:沃航科技