一、编译前工作
进入下载页面:https://www.openssl.org/source,下载.tar.gz包到指定目录。例如:下载openssl-1.1.1k.tar.gz
并解压到/home/jaron/workspace/openssl-1.1.1k
。
在父目录创建构建目录,例如:/home/jaron/workspace/openssl-1.1.1k-build
,通过终端进入构建目录。
默认编译动态库,例如:
./../openssl-1.1.1k/config \
no-asm \
CROSS_COMPILE=/home/crosstool/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi- \
AR=ar \
CC=gcc \
CXX=g++ \
RANLIB=ranlib \
--prefix=/opt/openssl-1.1.1k-arm
如果要编译静态库则需要加上选项:no-shared
,例如:
./../openssl-1.1.1k/config \
no-asm \
no-shared \
CROSS_COMPILE=/home/crosstool/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi- \
AR=ar \
CC=gcc \
CXX=g++ \
RANLIB=ranlib \
--prefix=/opt/openssl-1.1.1k-arm
在编译过程中如果出现如下错误:
Can't locate FindBin.pm in @INC (you may need to install the FindBin module) (@INC contains: /home/jaron/tools/ec20/crosstool/sysroots/x86_64-oesdk-linux//usr/lib/perl/5.20.0 /home/jaron/crosstool/sysroots/x86_64-oesdk-linux/ /usr/lib/perl /home/jaron/crosstool/sysroots/x86_64-oesdk-linux//usr/lib/perl/5.20.0 /home/jaron/crosstool/sysroots/x86_64-oesdk-linux/ /usr/lib/perl/site_perl/5.20.0 /home/jaron/crosstool/sysroots/x86_64-oesdk-linux//usr/lib/perl/vendor_perl/5.20.0 /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/perl/site_perl/5.20.0/ /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/perl/site_perl/5.20.0 /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/perl/vendor_perl/5.20.0/ /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/perl/vendor_perl/5.20.0 /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/perl/5.20.0/ /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/perl/5.20.0 /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/perl/5.20.0 .) at ./../openssl-1.1.1k/Configure line 15.
解决办法:切换至root
权限,再重新配置。
二、编译安装
配置成功后,修改Makefile
文件,查找到-m64
并删除。
打开终端,输入命令:make
,成功后,输入命令:make install
,即可把openssl库安装到目录:/opt/openssl-1.1.1k-arm
。
三、环境配置
设置环境变量,编辑/etc/profile
文件,末尾添加:
export OPENSSL_ROOT=/opt/openssl-1.1.1k-arm
# 运行依赖
export OPENSSL_CONF=$OPENSSL_ROOT/ssl/openssl.cnf
export LD_LIBRARY_PATH=$OPENSSL_ROOT/lib:$LD_LIBRARY_PATH
# 开发依赖
export PATH=$OPENSSL_ROOT/bin:$PATH
export CPATH=$OPENSSL_ROOT/include:$CPATH
export LIBRARY_PATH=$OPENSSL_ROOT/lib:$LIBRARY_PATH
export PKG_CONFIG_PATH=$OPENSSL_ROOT/lib/pkgconfig:$PKG_CONFIG_PATH # 需要同步修改pkgconfig目录下libcrypto.pc、libssl.pc、openssl.pc文件中的prefix路径,指定为当前的库路径