libcurl 移植 支持https,openssl NDK (二)

一 、编译环境介绍:(有一部分原因是环境造成编译失败)
系统版本:ubuntu-16.04.3-desktop-amd64 64位(可以使用虚拟机)
NDK版本:Android-ndk-r10b                  (已经测试,使用 Android-ndk-r17b无法通过)
源码版本: curl-7.61.0                 https://curl.haxx.se/download/curl-7.61.0.tar.gz(一个稳定不太旧的版本)
二、编译步骤,设置临时编译环境
1.下载 curl-7.61.0源码 包,解压
2.在curl-7.61.0

注:如果环境不一样,请修改脚本中如下几个导出的环境变量为自己的环境变量,需要自己确定工具链版本及api版本

_ANDROID_NDK="android-ndk-r10b"

_ANDROID_EABI="arm-linux-androideabi-4.9"

_ANDROID_API="android-L"

三、配置依赖库

 1.将 libcurl 移植 支持https,openssl NDK(一)中生成的库,头文件  放到 指定的目录 :例openssl/openssl64
 2.在脚本中需要指定例:

 export LDFLAGS="-pie -fPIE -L$(pwd)/openssl64/lib"
export CFLAGS="-pie -fPIE -I$(pwd)/openssl64/include"

--with-ssl=$(pwd)/openssl64

四、最重要的是脚本来了

以下是具体内容:(32、64稍有区别)
curl_android_build.sh

#!/bin/bash
LOCAL_NDK_HOME=/home/aa/android-ndk-r10b/
VERBOSE=1 
set_env_aarch64(){
#编辑依赖库选项 libc libssl libcrypto libc #如何不链接libc 链接时可能会报pthread_xxxxx相关函数未定义,这是一个坑#点 
#export LIBS="-ldl -lc -lssl -lcrypto" 
export LDFLAGS="-pie -fPIE -L$(pwd)/openssl64/lib"
export CFLAGS="-pie -fPIE -I$(pwd)/openssl64/include"
export CFLAGS="-DHAVE_OPENSSL -DHAVE_CONFIG_H -DBUILDING_LIBCURL -DCURL_STATICLIB -DUSE_OPENSSL -I${SYSROOT}/usr/include"
export CC="${LOCAL_NDK_HOME}toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc --sysroot=$SYSROOT"
export ANDROID_SYSROOT=$SYSROOT
export CROSS_SYSROOT=$ANDROID_SYSROOT
}
set_env_arm(){
#export LIBS="-ldl -lc -lssl -lcrypto" 
export PREFIX=$(pwd)/android-lib
export SYSROOT="${LOCAL_NDK_HOME}platforms/android-L/arch-arm"
export LDFLAGS="-pie -fPIE -L$(pwd)/openssl/lib"
export CFLAGS="-pie -fPIE -I$(pwd)/openssl/include"
export CC="${LOCAL_NDK_HOME}toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"
export CXX="${LOCAL_NDK_HOME}toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ --sysroot=$SYSROOT"
export ANDROID_SYSROOT=$SYSROOT
export CROSS_SYSROOT=$ANDROID_SYSROOT
}
 
#make clean
if test $1 -eq 1 ;then 
set_env_arm
#指定编译配置选项 --host指定目标平台 --with-ssl开启https支 
./configure  --prefix=$PREFIX \ 
 --host=arm-androideabi_linux \
 --with-ssl=$(pwd)/openssl \
 --disable-share\
 --enable-static \
 --disable-dict \
 --disable-ftp \
 --disable-imap \
 --disable-ldap \
 --disable-ldaps \
 --disable-pop3 \
 --disable-proxy \
 --disable-rtsp \
 --disable-smtp \
 --disable-telnet \
 --disable-tftp \
 --disable-zlib \
 --without-ca-bundle \
 --without-gnutls \
 --without-libidn \
 --without-librtmp \
 --without-libssh2 \
 --without-nss \
 --without-zlib \
 --prefix=$PREFIX #指定输出文件目录
make
make install
elif test $1 -eq 2 ;then
set_env_aarch64
./configure --host=aarch64-linux-androideabi \
 --with-ssl$(pwd)/openssl64 \
 --disable-share\
 --enable-static \
 --disable-dict \
 --disable-ftp \
 --disable-imap \
 --disable-ldap \
 --disable-ldaps \
 --disable-pop3 \
 --disable-proxy \
 --disable-rtsp \
 --disable-smtp \
 --disable-telnet \
 --disable-tftp \
 --disable-zlib \
 --without-ca-bundle \
 --without-gnutls \
 --without-libidn \
 --without-librtmp \
 --without-libssh2 \
 --without-nss \
 --without-zlib \
 --prefix=/home/aa/Downloads/curl-7.61.0/out/arm64 #指定输出文件目录 
make
make install
exit
fi

 在命令终端上执行 sudo ./curl_android_build.sh 1 生成 v7 32位

 在命令终端上执行 sudo ./curl_android_build.sh 2 生成 v8 64位

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值