2010-06-23 97 views
3

我正在嘗試爲工作中的項目構建通用二進制文件,但我似乎無法正確設置Xcode來這麼做。如何使用Xcode 3.2.2爲OSX構建通用二進制文件(ppc/i386)?

我很熟悉Apple文檔,但顯然我沒有正確閱讀它。

有問題的Xcode的構建選項似乎是:

  • 架構
  • 基地SDK
  • C/C++編譯器版本
  • 的Mac OS X部署目標

在我設置我有以下有效的體系結構:i386 ppc ppc64 ppc7400 ppc970 x86_64。

如果我用下面的選項中,我得到I386PPC970二進制:

  • 體系結構:I386 PPC
  • 基地SDK:的Mac OS X 10.5
  • C/C++編譯器版本:GCC 4.0
  • Mac OS X的部署目標:的Mac OS X 10.5

我對此有幾個問題:

  1. 爲什麼PPC970,而不是ppc7400(或簡稱PPC)?
  2. ppcs(ppc,ppc64,ppc7400,ppc970)之間的區別是什麼?
  3. 如何獲得任何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'。

這對我來說毫無意義。

回答

4

ppc970 == G5。如果您需要在G4之前支持,那麼只需構建ppc7400即可。

儘管您可以從彈出式菜單中選擇32-bit Universal(或Standard (32/64-bit Universal),如果適用),而不是與個別體系結構設置相混淆,而應該爲您提供所需的內容。

1

在目標設置進行更改下面..

GCC_MODEL_PPC64 = NO 

即,取消「使用64位整數數學」。

啓用將打開64位。所以它會是G5以上的..

相關問題