2014-03-29 69 views
1

我有一個靜態庫lipo'd iOS架構和OS X架構(x86_64,i386,armv7,armv7s,arm64)。嘗試鏈接胖二進制文件與64位模擬器目標時出錯

  • 64位x86架構是使用MacOSX的SDK
  • i386架構是使用iphonesimulator SDK
  • ARM體系結構中使用的iPhoneOS SDK

當我試圖鏈接建建建在構建設備或32位iOS模擬器目標時的示例應用程序中生成的庫。但是,當我嘗試建立它在64位的iOS模擬器目標我得到一個鏈接錯誤:

ld: framework not found CoreServices for architecture x86_64 

如果我從脂肪庫中它適用於所有的設備和模擬器刪除x86_64的切片。

我認爲這是因爲鏈接器更喜歡x86_64架構,如果它在64位模擬器中。但是由於它是爲macosx SDK編譯和鏈接的,因此它具有編碼的OS X依賴關係。

我試着爲iphonesimulator SDK添加第二個x68_64切片,但是lipo不會讓我。此外,我試圖找到一種方法,使模擬器使用i386架構,即使對於64位版本,但目前還沒有運氣。

如果絕對必要,我可以創建2個二進制文件來解決這個問題,但我真的希望在一個文件中包含它們。有沒有辦法做到這一點?

+0

我認爲你需要2個二進制文件,因爲osx和ios模擬器架構難以區分。 –

回答

1

我解決了它只爲iOS設備和模擬器構建它。 iOS Simulator SDK的64位slice同樣適用於iOS和OS X目標,前提是您不需要任何其他框架,而不需要OS X和iOS之間共享的框架(僅在我的情況下爲Foundation)。

相關問題