OSX 10.6ユキヒョウが提供するgccコンパイラを理解するのに苦労しています。これは、主に64ビット環境での経験が不足しているためです。
$ cat >foo.c
main() {}
$ gcc foo.c -o foo
$ file foo
foo: Mach-O 64-bit executable x86_64
$ lipo -detailed_info foo
input file foo is not a fat file
Non-fat file: foo is architecture: x86_64
ただし、私のアーキテクチャはIntel i386タイプと見なされます(最新のIntel Core2デュオMacBookの1つを使用しています)
$ arch
i386
コンパイラはi686-apple-darwin10をターゲットにしています
$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)
もちろん、32ビットをコンパイルすると、32ビットの実行可能ファイルが得られます。
$ gcc -m32 foo.c -o foo
$ file foo
foo: Mach-O executable i386
しかし、全体像はわかりません。コンパイラのデフォルト設定は、32ビットマシンを使用していると言っているアーチがある場合でも、x86_64実行可能ファイルを生成することです(なぜ?Core2は64です)。(私が推測する)32ビットカーネルを実行している場合でも、i686-apple-darwinプラットフォームをターゲットとするコンパイラを使用している場合でも。なんで?彼らはどのように走ることができますか?64または32をコンパイルする必要がありますか?
この質問は、Macでgcc 4.2.3をコンパイルしようとしたためですが、gmp、mpfr、およびlibibertyが(場合によっては)x86_64用にコンパイルされるという問題がたくさんあります。すべてのx86_64をコンパイルする必要がありますか?もしそうなら、ターゲットは何ですか(私が推測するi686-apple-darwin10ではありません)?
助けてくれてありがとう