多个 gcc 以及它们之间的链接

多个 gcc 以及它们之间的链接

我正在运行 centOS 6.3,它附带 gcc 4.4.6,并且我使用安装了 gcc 4.6.3这些说明

但当我输入时,gcc -v它仍然显示 gcc 4.4 是我正在使用的版本。较新的版本位于 /opt/gcc-4.6.3 下。

当我运行make命令时,是否必须指定路径才能使用较新的 gcc?如果是这样,我该怎么做,或者我可以用新版本完全替换旧版本吗?提前致谢。

答案1

您可以make通过设置环境变量来判断 C 编译使用哪个程序CCCXX对于 C++ 也是如此。 (假设您使用默认规则或至少复制它们。如果您使用 gcc 的显式可执行名称编写 Makefile,则这将不起作用。)否则,请将类似以下内容放入您的.profile

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

您只需将 /opt/gcc-4.6.3/bin (如果这是可执行文件所在的位置)添加到您的 PATH 中就可以了。

答案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

感谢来自 hiphop Facebook git 团队的 Jacky Wei 的帮助。

相关内容