mac android openssl编译
-
首先到github上下载最新的代码
mkdir androidopenssl cd androidopenssl git clone https://github.com/openssl/openssl
目前拉下来的是matser最新代码,也有可能不稳定的,建议最好切换到稳定的tag
git tag git checkout OpenSSL_1_1_1
我这里选择的是OpenSSL_1_1_1 版本
-
然后在androidopenssl上新建build_openssl_shell.sh文件进行编辑:
#!/bin/bash set -e set -x SCRIPTPATH=. export ANDROID_NDK_HOME=/Users/dengqu/Downloads/android-ndk-r17c OPENSSL_DIR=$SCRIPTPATH/openssl CC=clang # 配置toolchains PATH=$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin:$PATH # 设置Android API,这里设置的是21,编译过了。当设置14的时候出现编译失败,其他的版本需要你们去尝试了 ANDROID_API=21 # 设置编译的目标库 # 目标库的选项 android-arm, android-arm64, android-x86, android-x86 etc architecture=android-arm # 打开openssl文件夹,并创建make文件 cd ${OPENSSL_DIR} ./Configure ${architecture} -D__ANDROID_API__=$ANDROID_API # 构建 make # 拷贝到输出目录 OUTPUT_INCLUDE=$SCRIPTPATH/output/include OUTPUT_LIB=$SCRIPTPATH/output/lib/${architecture} mkdir -p $OUTPUT_INCLUDE mkdir -p $OUTPUT_LIB cp -RL include/openssl $OUTPUT_INCLUDE cp libcrypto.so $OUTPUT_LIB cp libcrypto.a $OUTPUT_LIB cp libssl.so $OUTPUT_LIB cp libssl.a $OUTPUT_LIB
-
然后更改build_openssl_shell.sh脚本的运行权限
chmod a+x build_openssl_shell.sh
-
这个时候目录结构如下:
-
运行脚本
./build_openssl_shell.sh
如果顺利的话,会在openssl目录下生成output文件
其中include里面是头文件。 lib里面是动态库和静态库,看你需要使用哪种,就拷贝哪种到你的工程里面
-
遇到的问题
- ndk系统路径找不到
这个时候需要查看系统ndk路径是否配置了
vim ~/.bash_profile
source ~/.bash_profile
- crypto/ec/ecp_nistz256-armv4.S:9: Error: unknown pseudo-op: `.rodata'
解决办法是编辑ecp_nistz256-armv4.S文件,然后删除.rodata
cd androidopenssl/openssl/crypto/ec vim ecp_nistz256-armv4.S
然后找到.rodata,删除保存即可