openssl库在x86平台,在安卓平台,在嵌入式平台上的交叉编译

百度内推,可文末扫码加微信

一、编译x86平台使用的openssl库:

其中OPENSSL_OUTPUT_PATH是最终编译出的openssl库和头文件存放的位置,自行定义即可。如果编译pc是64位的系统,-m32选项可以实现在64位的系统上编译32位的库。如果去掉该选项,那编译出来的就是64位的库;如果编译pc是32位的系统,直接去掉该选项,编译出的就是32位的库。
CC=gcc AR=ar RANLIB=ranlib ./Configure linux-generic32 threads -shared no-zlib -m32 --openssldir={OPENSSL_OUTPUT_PATH}
make && make install

二、编译安卓使用的openssl库:

编译安卓版本的库,首先要做的是提取安装环境的交叉编译工具。提取过程如下描述所示:
NDK_TOOLCHAIN_BASENAME是安卓交叉编译工具链名称,从ndk中提取出来的。OPENSSL_OUTPUT_PATH是最终编译出的openssl库和头文件存放的位置,ndk可以自行去github网上搜索下载,或者添加博主微信索取。

安卓交叉编译工具链提取(PWD是当前路径,这里都是shell脚本中的伪代码,只为网友提供思路,shell的语法,语句自己去学习、斟酌):
OPENSSL_TMP_FOLDER=PWD
OPENSSL_TARGET_API=android-21
OPENSSL_GCC_VERSION=4.9
OPENSSL_OUTPUT_PATH=PWD/openssl_build
rm -rf OPENSSL_OUTPUT_PATH
mkdir -p OPENSSL_OUTPUT_PATH
mkdir -p OPENSSL_TMP_FOLDER/android-toolchain-arm
NDK_MAKE_TOOLCHAIN=/opt/android-ndk-r10e/build/tools/make-standalone-toolchain.sh
if [ ! -d “{OPENSSL_TMP_FOLDER}/android-toolchain-arm/bin” ]
then
{NDK_MAKE_TOOLCHAIN}
–platform={OPENSSL_TARGET_API}
–arch=arm
–toolchain=arm-linux-androideabi-{OPENSSL_GCC_VERSION}
–install-dir="{OPENSSL_TMP_FOLDER}/android-toolchain-arm"
fi
export TOOLCHAIN_PATH="{OPENSSL_TMP_FOLDER}/android-toolchain-arm/bin"
export TOOL=arm-linux-androideabi
export NDK_TOOLCHAIN_BASENAME={TOOLCHAIN_PATH}/{TOOL}

编译armeabi-v7a架构的openssl库:

CC={NDK_TOOLCHAIN_BASENAME}-gcc AR={NDK_TOOLCHAIN_BASENAME}-ar RANLIB={NDK_TOOLCHAIN_BASENAME}-ranlib CPPFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 " CXXFLAGS=" -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions " CFLAGS=" -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 " LDFLAGS="-march=armv7-a -Wl,–fix-cortex-a8" ./Configure android-armv7 --openssldir={OPENSSL_OUTPUT_PATH}

编译armeabi架构的openssl库:
CC={NDK_TOOLCHAIN_BASENAME}-gcc AR={NDK_TOOLCHAIN_BASENAME}-ar RANLIB={NDK_TOOLCHAIN_BASENAME}-ranlib CPPFLAGS="-march=armv5 -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 " CXXFLAGS=" -march=armv5 -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions " CFLAGS=" -march=armv5 -mfloat-abi=softfp -mfpu=vfpv3-d16 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 " LDFLAGS="-march=armv5 -Wl,–fix-cortex-a8" ./Configure android --openssldir={OPENSSL_OUTPUT_PATH}

make && make install

三、给其他嵌入式平台编译openssl库:

其中CROSS是我们嵌入式项目工程中设置的环境变量。-shared是会编译出动态库来。no-zlib是不需依赖zlib库。OPENSSL_OUTPUT_PATH是最终编译出的openssl库和头文件存放的位置

CC=CROSS-gcc AR=CROSS-ar RANLIB=CROSS-ranlib ./Configure linux-armv4 threads -shared no-zlib --openssldir={OPENSSL_OUTPUT_PATH}
make && make install

扫一扫,可加楼主微信,一起交流C语言,嵌入式等IT技术。
在这里插入图片描述
声明:本文原创,码字不易,版权必究,编辑转载请注明链接出处与原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值