3

作業中のプロジェクト用にユニバーサルバイナリを構築しようとしていますが、Xcodeを適切に設定できないようです。

私はこれに関するAppleのドキュメントに精通していますが、どうやら正しく読んでいないようです。

問題のXcodeビルドオプションは次のようです。

  • アーキテクチャ
  • ベースSDK
  • C /C++コンパイラバージョン
  • MacOSXの導入ターゲット

私の設定では、次の有効なアーキテクチャがあります:i386 ppc ppc64 ppc7400ppc970x86_64。

次のオプションを使用すると、i386ppc970でバイナリを取得します。

  • アーキテクチャ:i386 ppc
  • ベースSDK:Mac OS X 10.5
  • C / C ++コンパイラバージョン:GCC 4.0
  • Mac OS X展開ターゲット:Mac OS X 10.5

これについていくつか質問があります。

  1. なぜppc7400(または単にppc)ではなくppc970なのですか?
  2. ppcs(ppc、ppc64、ppc7400、ppc970)の違いは何ですか?
  3. ppcのバイナリを取得するにはどうすればよいですか?

どうやら、テスト用に持っているMac Miniで動作するには、ppc7400のバイナリが必要です。MiniにはG4が搭載されており、OSX10.5.8を実行しています。私の知る限り、ppc7400を使用したバイナリは機能しますが、ppc970のみを使用したバイナリは機能しません。

Base SDKを10.4uに変更するなど、上記のビルドオプションのいくつかの組み合わせを試しました。上記の構成は、ビルドさえする唯一のものです。他のビルドは失敗します。多くの場合、ヘッダーファイルまたは明確に利用可能な#definesが認識されないことが原因です。たとえば、コンパイラをgcc 4.2に変更すると、#include_nextディレクティブが原因で、stdarg.hの検索でエラーが発生し、ヘッダーを修正するための明確なパスがありません。Base SDKを4.0にドロップすると、インクルードを変​​更しないにもかかわらず、#define FSIZElonglongが認識されなくなります。

私はあなたがこれについて私に与えることができるどんな洞察にも本当に感謝します。


更新を編集

情報をありがとう。私は今旗を理解しています。しかし、奇妙な結果が得られます。

これらは私のビルドフラグです:

GCC_VERSION = 4.0 MACOSX_DEPLOYMENT_TARGET = 10.4 SDKROOT = macosx10.5 GCC_MODEL_TUNING = G3

これにより、lipoで示されるようにアーチ'ppc'を持つオブジェクトファイル(.o)が生成されます。含まれているすべてのライブラリとフレームワークは、「ppc」または「ppc7400」のいずれかです(これもlipoで示されています)。しかし、最終的なビルドは「ppc970」です。

私はこれを非常に注意深く調べて、すべてを確実に手に入れました。誰かがppcアーキテクチャの違いの理由を考えることができますか?

新しいプロジェクト(Hello World)を作成し、それを最初のプロジェクトのすべてのライブラリとフレームワークにリンクするところまで行ってきました。Helloは、「ppc970」ではなく「ppc」としてビルドされます。

これは私には意味がありません。

4

2 に答える 2

4

ppc970== G5。までさかのぼってサポートする必要がある場合は、G4用にビルドしてppc7400ください。

ただし、個々のアーキテクチャ設定をいじるのではなく、ポップアップ メニューから32-bit Universal(またはStandard (32/64-bit Universal)、適切な場合は を) 選択するだけで、必要なものが得られます。

于 2010-06-23T22:43:11.967 に答える
1

ターゲット設定で、以下の変更を行います..

GCC_MODEL_PPC64 = NO

つまり、「Use 64-bit integer Math」のチェックを外します。

有効にすると、64 ビットがオンになります。だからG5以降になります..

于 2010-12-10T13:57:27.930 に答える