Build OpenSSL for iOS

来源:互联网 发布:里弗斯的点球大战知乎 编辑:程序博客网 时间:2024/06/12 23:07

OpenSSL的版本为1.0.2h

编译脚本如下:


#!/bin/bash# This script builds the iOS and Mac openSSL libraries# Download openssl http://www.openssl.org/source/ and place the tarball next to this script# Credits:# https://github.com/st3fan/ios-openssl# https://github.com/x2on/OpenSSL-for-iPhone/blob/master/build-libssl.shset -eusage (){echo "usage: $0 [minimum iOS SDK version (default 7.0)]"exit 127}if [ $1 -e "-h" ]; thenusagefiMIN_SDK_VERSION="7.0"if [ -z $1 ]; thenSDK_VERSION="9.3"elseSDK_VERSION=$1fiOPENSSL_VERSION="openssl-1.0.2h"DEVELOPER=`xcode-select -print-path`buildMac(){ARCH=$1echo "Building ${OPENSSL_VERSION} for ${ARCH}"TARGET="darwin-i386-cc"if [[ $ARCH == "x86_64" ]]; thenTARGET="darwin64-x86_64-cc"fipushd . > /dev/nullcd "${OPENSSL_VERSION}"./Configure ${TARGET} --openssldir="/tmp/${OPENSSL_VERSION}-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-${ARCH}.log"make >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1make install >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1make clean >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1popd > /dev/null}buildIOS(){ARCH=$1pushd . > /dev/nullcd "${OPENSSL_VERSION}"  if [[ "${ARCH}" == "i386" || "${ARCH}" == "x86_64" ]]; thenPLATFORM="iPhoneSimulator"elsePLATFORM="iPhoneOS"sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c"fi  export $PLATFORMexport CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"export CROSS_SDK="${PLATFORM}${SDK_VERSION}.sdk"export BUILD_TOOLS="${DEVELOPER}"export CC="${BUILD_TOOLS}/usr/bin/gcc -arch ${ARCH}"   echo "Building ${OPENSSL_VERSION} for ${PLATFORM} ${SDK_VERSION} ${ARCH}"if [[ "${ARCH}" == "x86_64" ]]; then./Configure darwin64-x86_64-cc --openssldir="/tmp/${OPENSSL_VERSION}-iOS-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log"else./Configure iphoneos-cross --openssldir="/tmp/${OPENSSL_VERSION}-iOS-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log"fiecho "Configure Done"# add -isysroot to CC=sed -ie "s!^CFLAG=!CFLAG=-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=${MIN_SDK_VERSION} -fembed-bitcode !" "Makefile"make >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1make install_sw >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1make clean >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1popd > /dev/null}echo "Cleaning up"rm -rf include/openssl/* lib/*mkdir -p lib/iOSmkdir -p lib/Macmkdir -p include/openssl/rm -rf "/tmp/${OPENSSL_VERSION}-*"rm -rf "/tmp/${OPENSSL_VERSION}-*.log"rm -rf "${OPENSSL_VERSION}"if [ ! -e ${OPENSSL_VERSION}.tar.gz ]; thenecho "Downloading ${OPENSSL_VERSION}.tar.gz"curl -O https://www.openssl.org/source/${OPENSSL_VERSION}.tar.gzelseecho "Using ${OPENSSL_VERSION}.tar.gz"fiecho "Unpacking openssl"tar xfz "${OPENSSL_VERSION}.tar.gz"buildMac "i386"buildMac "x86_64"echo "Copying headers"cp /tmp/${OPENSSL_VERSION}-i386/include/openssl/* include/openssl/echo "Building Mac libraries"lipo \"/tmp/${OPENSSL_VERSION}-i386/lib/libcrypto.a" \"/tmp/${OPENSSL_VERSION}-x86_64/lib/libcrypto.a" \-create -output lib/Mac/libcrypto.alipo \"/tmp/${OPENSSL_VERSION}-i386/lib/libssl.a" \"/tmp/${OPENSSL_VERSION}-x86_64/lib/libssl.a" \-create -output lib/Mac/libssl.abuildIOS "armv7"buildIOS "arm64"buildIOS "x86_64"buildIOS "i386"echo "Building iOS libraries"lipo \"/tmp/${OPENSSL_VERSION}-iOS-armv7/lib/libcrypto.a" \"/tmp/${OPENSSL_VERSION}-iOS-arm64/lib/libcrypto.a" \"/tmp/${OPENSSL_VERSION}-iOS-i386/lib/libcrypto.a" \"/tmp/${OPENSSL_VERSION}-iOS-x86_64/lib/libcrypto.a" \-create -output lib/iOS/libcrypto.alipo \"/tmp/${OPENSSL_VERSION}-iOS-armv7/lib/libssl.a" \"/tmp/${OPENSSL_VERSION}-iOS-arm64/lib/libssl.a" \"/tmp/${OPENSSL_VERSION}-iOS-i386/lib/libssl.a" \"/tmp/${OPENSSL_VERSION}-iOS-x86_64/lib/libssl.a" \-create -output lib/iOS/libssl.aecho "Cleaning up"rm -rf /tmp/${OPENSSL_VERSION}-*rm -rf ${OPENSSL_VERSION}echo "Done"



Reference:

https://github.com/x2on/OpenSSL-for-iPhone/    上面的代码大多从此复制 



2 0
原创粉丝点击