移植Open SSL库(一)

1、下载工程

https://www.openssl.org/source/

下载最新版的openssl-1.1.1-pre5

2、打开NOTES.ANDROID

加压后进入根目录,可以看到

 Configuration
 -------------


 Android is naturally cross-compiled target and you can't use ./config.
 You have to use ./Configure and name your target explicitly; there are
 android-arm, android-arm64, android-mips, android-mip64, android-x86
 and android-x86_64. Do not pass --cross-compile-prefix (as you might
 be tempted), as it will be "calculated" automatically based on chosen
 platform. Though you still need to know the prefix to extend your PATH,
 in order to invoke $(CROSS_COMPILE)gcc and company. (Configure will fail
 and give you a hint if you get it wrong.) Apart from PATH adjustment
 you need to set ANDROID_NDK environment to point at NDK directory
 as /some/where/android-ndk-<ver>. NDK customarily supports multiple
 Android API levels, e.g. android-14, android-21, etc. By default latest 
 one available is chosen. If you need to target older platform, pass
 additional -D__ANDROID_API__=N to Configure. N is numeric value of the
 target platform version. For example, to compile for ICS on ARM with
 NDK 10d:


    ANDROID_NDK=/some/where/android-ndk-10d
    PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuild/linux-x86_64/bin:$PATH

    ./Configure android-arm -D__ANDROID_API__=14

这样一段话,根据这句话,写编译脚本build-android.sh如下

cd /home/yong/Desktop/test-android-openssl-001/openssl-1.1.1-pre5
rm -rf ./android
mkdir ./android
export ANDROID_NDK=/home/yong/Downloads/android-ndk-r16b
export PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH
./Configure android-arm -D__ANDROID_API__=23 --prefix=/home/yong/Desktop/test-android-openssl-001/openssl-1.1.1-pre5/android
make && make install

3、执行编译

sh build-android.sh

再到根目录/android下,即可看到编译结果


* 编译脚本改进

#armeabi armeabi-v7a armeabi-v7a-hard arm64-v8a mips mips64 x86 x86_64
export ARCH=arm

cd /home/yong/Desktop/test-android-openssl-001/openssl-1.1.1-pre5
make clean
rm -rf ./android-$ARCH
mkdir ./android-$ARCH
export ANDROID_NDK=/home/yong/Downloads/android-ndk-r16b
export PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH
./Configure android-$ARCH -D__ANDROID_API__=23 --prefix=/home/yong/Desktop/test-android-openssl-001/openssl-1.1.1-pre5/android-$ARCH
make && make install

*编译脚本改进

其中ARCH_NAME的备选值可以从NOTES.ANDROID文件中找到。

func_cmp(){
	cd /home/yong/Desktop/test-android-openssl-001/openssl-1.1.1-pre5
	make clean
	rm -rf ./android-$ARCH
	mkdir ./android-$ARCH
	export ANDROID_NDK=/home/yong/Downloads/android-ndk-r16b
	export PATH=$ANDROID_NDK/toolchains/$TOOL_CHAIN/prebuilt/linux-x86_64/bin:$PATH
	./Configure $ARCH_NAME -D__ANDROID_API__=23 --prefix=/home/yong/Desktop/test-android-openssl-001/openssl-1.1.1-pre5/android-$ARCH
	make && make install
}

for ARCH in armeabi-v7a armeabi arm64-v8a x86 x86_64 mips mips64
do
	echo $ARCH
	if [ "$ARCH" = "armeabi-v7a" ]; then
		ARCH_NAME=android-arm
		TOOL_CHAIN=arm-linux-androideabi-4.9
	fi
	if [ "$ARCH" = "armeabi" ]; then
		ARCH_NAME=android-arm
		TOOL_CHAIN=arm-linux-androideabi-4.9
	fi
	if [ "$ARCH" = "arm64-v8a" ]; then
		ARCH_NAME=android-arm64
		TOOL_CHAIN=aarch64-linux-android-4.9
	fi
	if [ "$ARCH" = "mips" ]; then
		ARCH_NAME=android-mips
		TOOL_CHAIN=mipsel-linux-android-4.9
	fi
	if [ "$ARCH" = "mips64" ]; then
		ARCH_NAME=android-mip64
		TOOL_CHAIN=mips64el-linux-android-4.9
	fi
	if [ "$ARCH" = "x86" ]; then
		ARCH_NAME=android-x86
		TOOL_CHAIN=x86-4.9
	fi
	if [ "$ARCH" = "x86_64" ]; then
		ARCH_NAME=android-x86_64
		TOOL_CHAIN=x86_64-4.9
	fi
	echo $TOOL_CHAIN
	func_cmp
done


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值