libcurl for ios 编译脚本

本文介绍了一个用于在iOS平台上编译libcurl库的自动化脚本,该脚本能够帮助开发者轻松地集成curl支持,包括对bitcode的支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

curl自动编译脚本 

#!/bin/sh

###########################################################################
#  Change values here                                                     #
#                                                                         #
VERSION="7.54.1"                                                          #
SDKVERSION=`xcrun -sdk iphoneos --show-sdk-version`                       #
DEVELOPER=`xcode-select -print-path`                                      #
ARCHS="i386 x86_64 armv7 armv7s arm64"                                    #
#                                                                         #
###########################################################################
#                                                                         #
# Don't change anything under this line!                                  #
#                                                                         #
###########################################################################


echo "########################## Build libcurl #########################"

CURRENTPATH=$(pwd)      
SSLPATH="${CURRENTPATH}/OpenSSL"


set -e
#判断当前目录下是否有curl-VERSION.tar.gz压缩包
if [ ! -e curl-${VERSION}.tar.gz ] ;
then
	curl -O https://curl.haxx.se/download/curl-${VERSION}.tar.gz
else
	echo "--OK!------ 使用文件:curl-${VERSION}.tar.gz"

fi

mkdir -p "${CURRENTPATH}/src"
mkdir -p "${CURRENTPATH}/bin"
mkdir -p "${CURRENTPATH}/lib"

tar zxf curl-${VERSION}.tar.gz -C "${CURRENTPATH}/src"      #将压缩包解压缩到src下
echo "--OK!------ 解压文件:curl-${VERSION}.tar.gz到${CURRENTPATH}/src"
cd "${CURRENTPATH}/src/curl-${VERSION}"                     #进入到curl文件夹下
echo "--OK!------ 进入目录:${CURRENTPATH}/src/curl-${VERSION}"

#获取当前目录绝对路径
BUILDPATH=$(pwd)
echo "--OK!------ 当前目录:${BUILDPATH}"


for ARCH in ${ARCHS}
do
    echo "##################BUILDIT(${ARCH} , ${ARCH})##################"

    export IPHONEOS_DEPLOYMENT_TARGET="7.0"
    export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
    export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
    export BUILD_TOOLS="${DEVELOPER}"

    
    export CC=$(xcrun --find gcc)


    if [[ "${ARCH}" == "i386" || "${ARCH}" == "x86_64" ]]; then

        PLATFORM="iPhoneSimulator"
        SDKTYPE="iphonesimulator"

        export CFLAGS="-arch ${ARCH} -pipe -Os -gdwarf-2 -isysroot $(xcrun --sdk $SDKTYPE --show-sdk-path) -fembed-bitcode -mios-simulator-version-min=$IPHONEOS_DEPLOYMENT_TARGET"
        export LDFLAGS="-L${SSLPATH}/bin/${platform}${SDK}-${target}.sdk/lib"
        export PKG_CONFIG_PATH="${SSLPATH}/bin/${platform}${SDK}-${target}.sdk/lib/pkgconfig"

        mkdir -p "${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
        LOG="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/build-curl-${VERSION}.log"
        ./configure --disable-shared --enable-static --host="${ARCH}-apple-darwin" --with-ssl=$SSLPATH --prefix="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/" > "${LOG}" 2>&1
    else
        PLATFORM="iPhoneOS"
        SDKTYPE="iphoneos"

        export CFLAGS="-arch ${ARCH} -pipe -Os -gdwarf-2 -isysroot $(xcrun --sdk $SDKTYPE --show-sdk-path) -fembed-bitcode  -miphoneos-version-min=$IPHONEOS_DEPLOYMENT_TARGET"
        export LDFLAGS="-L${SSLPATH}/bin/${platform}${SDK}-${target}.sdk/lib"
        export PKG_CONFIG_PATH="${SSLPATH}/bin/${platform}${SDK}-${target}.sdk/lib/pkgconfig"

        mkdir -p "${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
        LOG="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/build-curl-${VERSION}.log"

        if [[ "${ARCH}" = "arm64" ]];
        then
            ./configure --disable-shared --enable-static  --enable-threaded-resolver --host="aarch64-apple-darwin" --with-ssl=$SSLPATH --prefix="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/" > "${LOG}" 2>&1

        else
            ./configure --disable-shared --enable-static  --enable-threaded-resolver --host="${ARCH}-apple-darwin" --with-ssl=$SSLPATH --prefix="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/" > "${LOG}" 2>&1
        fi

    fi



    make
#make -j `sysctl -n hw.logicalcpu_max`
    cp lib/.libs/libcurl.a ../../bin/libcurl-${ARCH}.a
    make clean

    echo "--OK!------ Install bin/libcurl-${ARCH}.a OK!"

    echo "################BUILDIT(${target} , ${platform}) End!################"
done

echo "--OK!------ Build library..."

echo "--开始归档"
#归档
LIBCURL_SRC=""
for ARCH in ${ARCHS}
do
    LIBCURL_SRC="${LIBCURL_SRC}${CURRENTPATH}/bin/libcurl-${ARCH}.a "
done
lipo -create ${LIBCURL_SRC} -output ${CURRENTPATH}/lib/libcurl.a
echo "--归档完毕"

mkdir -p ${CURRENTPATH}/include
cp -R ${BUILDPATH}/include ${CURRENTPATH}/
echo "--OK!------ Building done."

echo "--OK!------ Done."






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值