2011-08-28 84 views
2

我該如何設置所有東西,從我的OSX 10.7 Macbook Pro交叉編譯到我的越獄第4代iPod touch。我主要是爲了能夠將開源庫移植到iphone。我似乎無法找到任何有關iOS 4交叉編譯的優秀/最新文章。在Mac上交叉編譯iPhone?

回答

2

也沒有。我試過的所有工具鏈最終都無法工作或創建x86_64二進制文件,這在iOS上不起作用。 我目前正試圖直接在iPad上構建apr,因爲我已經從Cydia安裝了所有必需的東西,但是我卡住了kqueue.c而沒有正確編譯。我已經移植了lua和其他一些軟件,所以我可以說一般這樣工作。建立在本地平臺上而不是交叉編譯的主要原因是某些程序依賴於其他程序(例如:apr上的apr-util),因此其中一些程序必須運行。然而,在intel上運行arm是不可能的(至少在沒有仿真的情況下,iPhone Simulator使用i386二進制文件)。

任何人誰是熱衷於使用/建築UNIX工具在iOS上必須保持以下幾點:

  • 你可能會發現你想要的東西,但它不是說,預計它會工作(這意特別是對於開發者來說,例如:apr在Cydia中發佈,但它不是一個完整的包,所以構建apr-util沒有用)。
  • 你必須使用越獄設備。如果您打破操作系統並需要恢復,這可能會成爲問題。一定要保存SHSH,以便能夠恢復到可越獄的iOS。
  • 如果你沒有找到你正在尋找的東西,事情會變得非常混亂。大多數軟件雖然被認爲可以在通用的UNIX系統上工作,但在iOS上可能會遇到問題,它們在結構上和工作方式上都接近OS X,但在網絡相關部分尤其存在差異。 另外,您可能必須(假)代碼簽署您構建的任何軟件。即使沒有構建問題的軟件也可能存在不必要的意外:我成功地爲iOS構建了apache2,但是當我運行時,我被SIGSYS卡住了,沒有更多的解釋。

所以,要小心並且自己動手,因爲事情通常不容易。

關於Mac沒有工具鏈(Apple提供的除外)的事實,這可能會有一個解釋,因爲您不需要有Mac下載Xcode,而Mac的開銷通常比開發者多願意花錢。這意味着儘管最近出現了繁榮的mac硬件,但沒有太多人做同樣的事情。工具鏈已經或多或少成功地爲基於Linux的操作系統(例如Ubuntu)構建。您始終可以嘗試使用VM。

2

經過一番嘗試,我發現可以使用./configure並強制它爲arm-apple-darwin11構建。你必須在./configure之後直接使用這些標誌。--some-flags: CPP =「cpp」CXXCPP =「cpp」CXX =「/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple -darwin10-llvm-g ++ - 4.2「CXXFLAGS =」 - O -arch armv6 -arch armv7 -isysroot $ SDK_ROOT/SDKs/iPhoneOS5.0.sdk「CC =」/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin /arm-apple-darwin10-llvm-gcc-4.2「CFLAGS =」 - O -arch armv6 -arch armv7 -isysroot $ SDK_ROOT/SDKs/iPhoneOS5.0.sdk「AR =」/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar「AS =」/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as「LD =」/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld「LDFLAGS = -lstdC++ -arch armv6 -arch armv7 -isysroot $ SDK_ROOT/SDKs/iPhoneOS5.0.sdk「LIBTOOL =」/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool「STRIP =」/ Developer/Platforms/iPhoneOS .platform/Developer/usr/bin/strip「RANLIB =」/ Developer/Platforms/iPhoneOS。平臺/開發人員/ usr/bin/ranlib「

CPP和CXXCPP是所需的預處理器(默認值); CC和CXX是通過Xcode附帶的arm和c和C++編譯器的路徑,另一個是標誌編譯器獲取或者宏定義了編譯時使用的最常用工具的路徑,我不能授予所有的東西,但是這是你應該做什麼的好主意。 : --prefix =/tmp/build --host = arm-apple-darwin11 他們所做的就是幫助創建一個makefile文件,該文件將會在/ tmp/build目錄下的文件夾中發送庫文件和程序。