複数のgccとその間のリンク

複数のgccとその間のリンク

私はgcc 4.4.6に付属のcentOS 6.3を実行しており、次のようにgcc 4.6.3をインストールしました。このガイドライン

しかし、入力すると、gcc -vまだgcc 4.4が私が使用しているバージョンであることがわかります。最新バージョンは/opt/gcc-4.6.3にあります。

コマンドを実行するときにmake最新のgccを使用するにはパスを指定する必要がありますか?それではどうすればいいですか?それとも古いバージョンを新しいバージョンに完全に置き換えることができますか?よろしくお願いします。

答え1

make環境変数を設定して、Cコンパイルにどのプログラムを使用するかを知ることができ、CCC CXX++でも同様です。 (デフォルトのルールを使用するか、少なくともコピーしているとします。gccの明示的な実行可能ファイル名でMakefileを作成すると機能しません。)そうでない場合は、次のように入力します.profile

export CC=/opt/gcc-4.6.3/<path to cc>  CXX=/opt/gcc-4.6.3/<path to g++>

PATHに/opt/gcc-4.6.3/bin(実行可能ファイルがある場合)を追加するだけです。

答え2

まず、riciの答えのおかげで彼の方法はうまくいきましたが、ちょうど私にもっと合う方法を見つけました。

まず、問題が発生した場合に備えて、以前のgccを別の名前で保存しました。

mv /usr/bin/gcc /usr/bin/gcc_old
mv /usr/bin/g++ /usr/bin/g++_old

その後、新しいビルドをgccにリンクし、いくつかの重要な内容をコピーしました。

ln -s -f /opt/gcc-4.6.3/bin/gcc /usr/bin/gcc
ln -s -f /opt/gcc-4.6.3/bin/g++ /usr/bin/g++

cp /opt/gcc-4.6.3/lib64/libstdc++.so.6.0.16 /usr/lib64/.
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
ln -s -f /usr/lib64/libstdc++.so.6.0.16 /usr/lib64/libstdc++.so.6

助けてくれたヒップホップのFacebook gitチームのJacky Weiに感謝します。

関連情報