Using libcurl on iOS 5 as an alternative to NSURLConnection

后端 未结 7 1901
栀梦
栀梦 2021-02-01 10:01

Update: NSURLConnection now seems to properly support 100-Continue. In any case, this answer contains a link to the script to build libcurl for iOS/OSX.

I\'m ha

7条回答
  •  故里飘歌
    2021-02-01 10:29

    Important Update for people getting: C compiler cannot create executables
    Make sure you install the command line XCode tools...

    From XCode menu select: Preferences --> downloads --> Command Line Tools

    ...and hit "Install" if not installed.

    The issue with the above script is that it works with older versions of XCode. If you installed the latest XCode, the location of all the compiler tools will be different. I've changed the script to support both old and new XCode versions, and have some error checking built-in. Does this help?

    Below -- I assume SDK version 5.1 -- you may need to modify that...

    #!/bin/bash
    
    set -e
    
    export SDK=5.1
    
    checkExists() {
    
        if [ ! -e $1 ]
        then
            echo "Didn't find: $1 -- try to locate parts of this to see how to fix the path"
            exit 1
        else 
            echo "using $1"
        fi
    
    }
    
    buildit() {
    
        target=$1
        platform=$2
    
        root="/Applications/Xcode.app/Contents/Developer/Platforms/${platform}.platform/Developer"
        oldRoot="/Developer/Platforms/${platform}.platform/Developer"
    
        if [ ! -d "${root}" ]
        then
            root="${oldRoot}"
        fi
    
        if [ ! -d "${root}" ]
        then
            echo " "
            echo "Oopsie.  You don't have an iOS SDK root in either of these locations: "
            echo "   ${root} "
            echo "   ${oldRoot}"
            echo " "
            echo "If you have 'locate' enabled, you might find where you have it installed with:"
            echo "   locate iPhoneOS.platform | grep -v 'iPhoneOS.platform/'"
            echo " "
            echo "and alter the 'root' variable in the script -- or install XCode if you can't find it... "
            echo " "
            exit 1
        fi
    
        export CC="${root}/usr/bin/gcc"
        export CFLAGS="-arch ${target} -isysroot ${root}/SDKs/${platform}${SDK}.sdk"
        export CPP="${root}/usr/bin/llvm-cpp-4.2"
        export AR="${root}/usr/bin/ar"
        export RANLIB="${root}/usr/bin/ranlib"
    
        checkExists ${CC}
        checkExists ${root}/SDKs/${platform}${SDK}.sdk
        checkExists ${CPP}
        checkExists ${AR}
        checkExists ${RANLIB}
    
        ./configure --disable-shared --without-ssl --without-libssh2 --without-ca-bundle --without-ldap --disable-ldap --host=${target}-apple-darwin10
    
        make clean
        make
        $AR rv libcurl.${target}.a lib/*.o
    }
    
    buildit armv6 iPhoneOS
    buildit armv7 iPhoneOS
    buildit i386 iPhoneSimulator
    
    lipo -create libcurl.armv7.a libcurl.armv6.a libcurl.i386.a -output libcurl.a
    

提交回复
热议问题