我正在嘗試爲工作中的項目構建通用二進制文件,但我似乎無法正確設置Xcode來這麼做。如何使用Xcode 3.2.2爲OSX構建通用二進制文件(ppc/i386)?
我很熟悉Apple文檔,但顯然我沒有正確閱讀它。
有問題的Xcode的構建選項似乎是:
- 架構
- 基地SDK
- C/C++編譯器版本
- 的Mac OS X部署目標
在我設置我有以下有效的體系結構:i386 ppc ppc64 ppc7400 ppc970 x86_64。
如果我用下面的選項中,我得到I386和PPC970二進制:
- 體系結構:I386 PPC
- 基地SDK:的Mac OS X 10.5
- C/C++編譯器版本:GCC 4.0
- Mac OS X的部署目標:的Mac OS X 10.5
我對此有幾個問題:
- 爲什麼PPC970,而不是ppc7400(或簡稱PPC)?
- ppcs(ppc,ppc64,ppc7400,ppc970)之間的區別是什麼?
- 如何獲得任何ppc的二進制文件?
很顯然,我需要一個ppc7400的二進制文件來處理我們用於測試的Mac Mini。 Mini有一個G4並且正在運行OSX 10.5.8。從我所知道的情況來看,一個ppc7400的二進制文件可以工作,但沒有一個只能使用ppc970。
我已經嘗試了上述構建選項的幾種組合,包括將我的Base SDK更改爲10.4u。上述配置是唯一的配置。其他構建失敗,通常是因爲不識別頭文件或清晰可用的#define。例如,如果我將編譯器更改爲gcc 4.2,則由於#include_next指令而導致搜索stdarg.h時出錯,並且沒有正確標題的清除路徑。如果我將我的Base SDK下降到4.0,#define FSIZE long long不再被識別,儘管沒有改變任何包含。
我真的很感謝你能給我的任何見解。
編輯UPDATE
感謝您的信息。我現在明白了旗幟。但是我得到了一個奇怪的結果。
這是我構建的標誌現在:
GCC_VERSION = 4.0 MACOSX_DEPLOYMENT_TARGET = 10.4 SDKROOT = macosx10.5 GCC_MODEL_TUNING = G3
這將產生目標文件(.o)有拱 '競價排名'如lipo所示。所有包含的庫和框架都是'ppc'或'ppc7400'(同樣如lipo所示)。但是,最終版本是'ppc970'。
我已經非常仔細地去了這個,以確保我得到了一切。任何人都可以想到ppc體系結構差異的原因嗎?
我甚至已經創建了一個新項目(Hello World),並將其鏈接到第一個項目的所有庫和框架。你好建立爲'ppc'而不是'ppc970'。
這對我來說毫無意義。