ios开发之libcurl库的编译详细教程

来源:互联网 发布:倩女幽魂mac可以玩吗 编辑:程序博客网 时间:2024/06/05 12:01

   一.libcurl的简介

     libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证libcurl支持ftp,http等协议的文件读取,还能自动获取文件大小, 最重要的是不需要怎么修改就能稳定支持完整下载大文件,还能支持跨平台。

 二.Mac下libcurl的编译

    因为libcurl没有iOS下可以直接使用.a库文件,所以想要使用它就必须自己去编译它源码,生成库文件,这是一个让人头疼的,让人想摔电脑的事。网上查到的相关资料比较少,而且又是Xcode和iOS SDK的版本都比较低。总结我这两天编译libcurl库“悲惨”的经历,我将详细的一步一步的列出libcurl的编译步骤:
  1. 下载源码,网上有很多libcurl的源码,也有很多带自动编译脚本,我千辛万苦的找啊找,终于找到了一个了,于是我将它上传到我的csdn资源里,以备下载使用(http://download.csdn.net/detail/yq910902/9458278)。
  2. 下载后,那就是编译了,关键的一步终于来临了。
   a.解压下载文件,打开终端,进入目录,可以查看一下Readme.txt学习一下怎么编译。懂脚本语言的可以打开ios-build-libcurl.sh和ios-build-libssl.sh看看,挺简单的。

      
   b.查看完readme.txt,了解后,基本就可以开始编译,但是编译前先修改ios-build-libcurl.sh文件的两个地方,将clang改成gcc,有人会疑问为啥要改成gcc,clang不是一样的吗?其实我也没弄懂,有人弄懂了可以留言告诉一下我,感激不尽。这里如果不改成gcc编译会报错,这个错误error: "We can't compile without socket() support! 如下(这里备注一下:关于下载libcurl源码,如果下载失败,导致编译失败的话,可以自己去官网手动下载放入相对应的文件夹内,官网https://curl.haxx.se/download.html):
       export CC=$(xcrun --sdk $SDKTYPE --find gcc)
        export CXX=$(xcrun --sdk $SDKTYPE --find clang++)
        export CFLAGS="-arch ${ARCH} -pipe -Os -gdwarf-2 -isysroot $(xcrun --sdk $SDKTYPE --show-sdk-path) -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 CC=$(xcrun --sdk $SDKTYPE --find gcc)
        export CXX=$(xcrun --sdk $SDKTYPE --find clang++)



    c.接下来,就开始编译了。执行脚本 ./ios-build-libcurl.sh后等着吧,libcurl库马上就好了。

三.libcurl的使用

     把最终合成好的libcurl.a(在当前目录下的/Curl+SSL.a/lib/里),把它拷贝到你的项目工程里,并且把/Curl+SSL.a/include/目录下的curl目录放入你的工程,一定要放入跟.m文件同一子目录下,否则你根本import不会自动匹配,而且会报错。
           

把以上步骤,一步一步的详细的做好,编译出libcurl.a库是基本没问题的。现在就是libcurl库的使用了。
如有问题,欢迎留言,我看到后一定会第一时间回复。
未完待续,敬请期待。。。
3 0