在IOS5.1上編譯Curl庫


最近項目需要在IOS上使用Curl庫,所以最重要的就是先把這個庫編譯出來。在網上也參考了一些文章,下面把我自己實踐的過程記錄下來,供以后參考。

1.從官方下載Curl源代碼。地址:http://curl.haxx.se/download.html

      由於在列表中沒有基於IOS編譯出來的二進制版本,所以只能下載源代碼來自己編譯。所以我選擇最新的7.26代碼壓縮包。

2.解壓源代碼,用命令行終端進入源代碼目錄。

3.執行配置命令。

命令1:

CC=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2

 

命令2:
export CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk"

 

命令3:
export LDFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -Wl,-syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk"

命令4:

export CPP=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-cpp-4.2

 

命令5:

export AR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar

 

命令6:

export RANLIB=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib

命令7:

./configure --disable-shared --without-ssl --without-libssh2 --without-ca-bundle --without-ldap --disable-ldap --host=arm-apple-darwin10

 

需要注意:

(1) 這里格式限制,會有自動換行。其實每個命令都必須在一行。

(2) 這里的路徑是我機器上的路徑,僅供參考。在選擇目錄的時候要看清楚目錄中指定的那個文件是否存在。(上文中紅色字標識)。

(3) 這里說明的文件都是基於IOS5.1系統的。IOS4.x版本中文件名稱不一致。(下面是4.2到5.1的對照關系)

 

arm-apple-darwin10-gcc-4.2.1  ===>   arm-apple-darwin10-llvm-gcc-4.2

iPhoneOS4.2.sdk                     ===>    iPhoneOS5.1.sdk

cpp                                        ===>    llvm-cpp-4.2

(4)如果配置正確,命令7執行時不會出現報錯。如果報錯也不要緊,會提示查看錯誤日志。打開日志仔細看看就知道問題出在哪里,比如某個執行程序或文件沒找到之類的。

 

4.在Xcode中建立Cocoa Touch Static Library工程,將代碼中的src和lib目錄的所有文件添加進工程。刪除src/macos 目錄中的文件。並且把 Makefile 和 Makefile.inc從target中去掉。

 

5.選中項目的Target查看屬性,在info頁面中搜索 other C Flags 這個名稱。並在該項下面添加如下命令:

-DHAVE_CONFIG_H -I/Users/XXX/curl-7.26.0/include -I/Users/XXX/curl-7.26.0/lib

其中路徑需要修改成自己機器上該文件夾所在的路徑。

 

6.編譯虛擬機版本和真機版本。

 

7.最后一步,使用lipo命令制作模擬器和真機通用版本的靜態庫。通用版本就是在測試時這個靜態庫可以在虛擬機上用,也可以在設備上用。其實該命令就是把兩個版本的.a文件合並成一個。

lipo -create /XXX/libcurl.a /XXX/libcurl.a -output libcurl-release.a

 

在把這個靜態庫添加進項目以后,編譯的時候報錯,那就需要在項目中添加 libz.dylib 的動態鏈接庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM