android-ndk-r16b编译OpenSSL for ARM32

android-ndk-r16b编译OpenSSL for ARM32

  • CentOS7安装ndk-r16b
  • 安装dos2unix
  • 下载openssl源代码
  • 修改 setenv-android.sh配置
  • 设置环境变量
  • 注意啦!
  • 配置编译openssl

CentOS7安装ndk-r16b

mkdir /root/android
cd /root/android
wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip
unzip android-ndk-r16b-linux-x86_64.zip

安装dos2unix

yum -y install dos2unix

下载openssl源代码

mkdir /root/ssl
cd /root/ssl
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
tar -zxvf openssl-1.1.0f.tar.gz
#获取Setenv-android.sh,我们需要这个脚本来给我们配置环境
cd /root/ssl/openssl-1.1.0f
wget https://wiki.openssl.org/images/7/70/Setenv-android.sh
# 注意这个文件是大写开头的,我们稍微修改一下名称,方便使用
mv Setenv-android.sh setenv-android.sh
#转换一下setenv-android.sh的文件格式
dos2unix setenv-android.sh

修改 setenv-android.sh配置

修改内容:
_ANDROID_NDK="android-ndk-r16b"
_ANDROID_EABI="arm-linux-androideabi-4.9"
_ANDROID_API="android-18"

设置环境变量

export ANDROID_NDK_ROOT=/root/android/android-ndk-r16b
source ./setenv-android.sh
#输出内容:
	ANDROID_NDK_ROOT: /root/android/android-ndk-r16b
	ANDROID_ARCH: arch-arm
	ANDROID_EABI: arm-linux-androideabi-4.9
	ANDROID_API: android-18
	ANDROID_SYSROOT: /root/android/android-ndk-r16b/platforms/android-18/arch-arm
	ANDROID_TOOLCHAIN: /root/android/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin
	FIPS_SIG: /root/ssl/openssl-1.1.0f-arm32/util/incore
	CROSS_COMPILE: arm-linux-androideabi-
	ANDROID_DEV: /root/android/android-ndk-r16b/platforms/android-18/arch-arm/usr
#创建编译后openssl安装目录
mkdir /root/ssl/openssl-output

注意啦!

由于ANDROID_SYSROOT: /root/android/android-ndk-r16b/platforms/android-18/arch-arm目录下没有usr/include头文件目录,这会在后面openssl编译中报错,简单处理办法是:
cd /root/android/android-ndk-r16b/sysroot/usr/include
cp -ar arm-linux-androideabi/asm .
cd  /root/android/android-ndk-r16b/platforms/android-18/arch-arm/usr
cp -ar /root/android/android-ndk-r16b/sysroot/usr/include .

配置编译openssl

./config no-shared no-ssl2 no-ssl3 no-comp no-hw no-engine --openssldir=/root/ssl/openssl-1.1.0f-arm32-out --prefix=/root/ssl/openssl-1.1.0f-arm32-out
#后面避免编译连接出现无法找到"stdio"的兼容错误,修改Makefile,在CFLAG和CFLAG_Q加上“-D__ANDROID_API__=18”
make depend
make
make install
编译安装后在/root/ssl/openssl-1.1.0f-arm32-out目录中就会出现:
	bin 存放openssl命令
	include 头文件
	lib 库文件
	share 文档一类的

你可能感兴趣的:(区块链,区块链)