5

Apple は GCC 4.6 または GCC 4.7 をサポートしていないため、MacPorts の GCC 4.6/4.7 ビルドに切り替えました。ただし、「ユニバーサル」アーキテクチャでコードをビルドするには問題がありました。

伝統的に、g++ -arch i386 -arch x86_64 ...少なくとも i386/x86_64 アーキテクチャ用にバイナリをコンパイルします。検索を行ったところ、-arch オプションは Apple のコンパイラでのみサポートされていることがわかりました。もちろん、Macports では動作しませんでした。私ができる最善の方法は、 -m32/-m64オプションを使用して、必要なアーキテクチャを指定することです。ただし、これは i386 または x86_64 形式のバイナリのみを生成します。私が本当に望んでいるのは、元の GCC コンパイラで行われたのと同じように、両方のアーキテクチャ (ユニバーサル) でバイナリ ファイルを取得することです。

これはサポートされていませんか、それとも既知の問題ですか? 一晩中 Google で答えを探してみましたが、何も役に立ちませんでした。それで、私だけがこの問題を抱えていて、それを機能させるために本当に重要なことを見逃しているのではないかと疑い始めましたか? 誰かが私にいくつかの提案をしてくれれば本当に感謝しています.

ところで。バリアントをインストールgcc46 +universalしましたが、アーキテクチャごとに個別のバイナリをコンパイルする以外に、本当に普遍的なものは何も生成しませんでした。

興。

4

2 に答える 2

6

ああ、私はちょうどこの問題を抱えていて、それにかなりの時間を費やしました。アップルバージョンのGCC4.2.1は、実際にはいくつかのフラグ(特に、-archフラグ)を尊重し、lipoを使用してオブジェクトファイルをファットオブジェクトに貼り付けるラッパーにすぎないことがわかりました。このドライバーを少し変更して、-archフラグを尊重しながらmacports GCCをラップし、マルチアーチオブジェクトファイルを生成するようにしました(とにかく32ビットと64ビットのIntel用)。

これを行う方法について、かなり広範囲にわたる記事を投稿しました。

http://thecoderslife.blogspot.com/2015/07/building-with-gcc-46-and-xcode-4.html

于 2012-03-02T08:20:07.667 に答える
3

lipoを使用して、異なるアーキテクチャのバイナリを単一のユニバーサルに結合できます。

于 2011-12-14T00:51:04.607 に答える