it-swarm-ja.com

使用するMacPortsのGCCを指定するにはどうすればよいですか?

GCC4.4.3をコンパイルして/ usr/local/binにインストールしましたが、MacPorts 1.8.2を介してポートをインストールすると、MacPortsが/usr/bin/gcc-4.2を使用していることが詳細に出力されます。

gccをチェックしています.../usr/bin/gcc-4.2

MacPortsに自分のGCC4.4.3を見つけさせるにはどうすればよいですか?これが私の既存のパスです:

/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/lib:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Mac OS X 10.6.2 SnowLeopardを実行しています。

5
hpy

最初の答え:しないでください!私の経験では、GCC4.4.3はSnowLeopardでは正しく機能しません。長さがゼロの文字列で問題が発生します。

2番目の答え:/ usr/binのシンボリックリンクを編集して、4.4のものを参照します。これを行うために私が書いたスクリプトは次のとおりです。

rm /usr/bin/c++ 
ln -s /usr/bin/c++-${1} /usr/bin/c++
rm /usr/bin/cc
ln -s /usr/bin/cc-${1} /usr/bin/cc
rm /usr/bin/cpp
ln -s /usr/bin/cpp-${1} /usr/bin/cpp
rm /usr/bin/g++
ln -s /usr/bin/g++-${1} /usr/bin/g++
rm /usr/bin/gcc
ln -s /usr/bin/gcc-${1} /usr/bin/gcc
rm /usr/bin/gcov
ln -s /usr/bin/gcov-${1} /usr/bin/gcov

私はそれをchgCverと呼んだので、コンパイラを4.4に変更するには、chgCver 4.4と入力します。もちろん、これを実行する前に、たとえば、c ++-4.4が正しい場所(おそらく/opt/local/bin/gcc-mp-4.4)を指していることも確認する必要があります。私の最初と3番目の答えを無視する傾向がありました。

3番目の答え:しないでください! (最初の回答を参照してください。)

3
Ben Hocking

MacPortsは、プラットフォーム用に高度なパッチが適用されているため、可能な限りApple提供のコンパイラを使用しています。たとえば、FSF gccでは不可能な-Archフラグを指定することで、複数のアーキテクチャ用にビルドできます。

/ usr/bin/ccでシンボリックリンクを変更した場合でも、MacPortsはAppleバージョンでのみ理解されるフラグを使用しようとします。これにより、 MacPortsを使用して何でもコンパイルします。

Apple提供のコンパイラを使用するのが最善の方法であるとMacPorts開発者を信頼してください。

7
raimue

それに応じて、Portfileのconfigure.compiler変数を設定します。

configure.compiler    macports-gcc-4.3

または、コマンドにconfigure.compiler = macports-gcc-4.3を追加します。

cf. このwikiページ

7
anddam