コンパイラフラグを渡すと-mmacosx-version-min=10.5
、 どういう意味ですか?結果のバイナリがppcではなくx86であることを意味すると思いますが、32ビットですか64ビットですか?ユキヒョウでコンパイルしているので、デフォルトの出力バイナリは64ビットです。私は合格していません-universal
、32ビット-64ビットのユニバーサルバイナリではないと思います。
このオプションは、ヘッダーに配置されたさまざまな可用性マクロによって使用されます。つまり、最新のSDK(つまり、10.6SDKで10.5をターゲットにする)を使用している場合でも、OSの最小バージョンが必要になる可能性があります。 10.5をターゲットにしているときに10.6APIを使用すると、警告がトリガーされ、APIはweak_import属性にリンクされます。
ほとんどのAppleのAPIヘッダーには、クラス、メソッド、関数、または列挙ごとに、それぞれを宣言するための可用性マクロが含まれています。
マクロは次のようになります。
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED
アーキテクチャに関しては、SDKのバイナリで使用可能なアーキテクチャにのみ依存します。たとえば、10.5 SDKでは、4つのアーキテクチャ(Intel/32ビット、PowerPC/32ビット、Intel/64ビット、PowerPC 64ビット)をターゲットにできますが、10.6 SDKでは、3つのアーキテクチャ(Intel/32ビット、PowerPC/32ビット、 Intel/64ビット)。
Snow Leopardを使用しているため、次のようなアーキテクチャオプションを渡すだけで、i386(Intel/32ビット)、ppc(PowerPC/32ビット)、またはx86_64(Intel/64ビット)のいずれかをターゲットにできます。
gcc -Arch i386
またはこのように(構成ベースのプロジェクトの場合):
CFLAGS="-Arch i386" LDFLAGS="-Arch i386" ./configure
-mmacosx-version-min=...
は、C++ STL実装(GNUまたはLLVM)のデフォルトの選択にも影響します。この点で、コンパイラーとリンカーにとっても同様に重要です。
私のテストから、このオプションをリンクステップ(-Archなど)に渡すことも重要です。したがって、マクロ/前処理に影響を与えるだけではありません(他の回答から推測される場合があります)。
コンパイルステップに渡されたがリンクステップには渡されなかった場合、10.6でビルドされた共有ライブラリは10.5ではロードされないことがわかりました。
Mac OS X10.5以降に登場したメソッドに対してコンパイラ警告をトリガーします。建築とは何の関係もありません。