当前位置: 首页>>技术教程>>正文


linux – 如何在Ubuntu中更改默认的GCC编译器?

, ,

问题描述

我在已经具有gcc /g ++-4.4的ubuntu 11.04上安装了gcc-3.3 /g ++-3.3。所以在我的系统中gcc-3.3和4.4都可用。我可以根据需要调用两个编译器。如果我只调用命令gcc,则将调用gcc-4.4。要调用gcc-3.3,我必须使用命令gcc-3.3

如何将默认编译器更改为gcc-3.3?当我执行命令gcc时,它应该调用gcc-3.3而不是gcc-4.4。

另外,如何将make文件中的变量CXX更改为gcc-3.3?我希望更改系统中的一个通用全局位置,而不是更改所有make文件。

最佳方案

按照@Tommy的建议,您应该使用update-alternatives。它为系列的每个软件分配值,从而定义了调用应用程序的顺序。

它用于维护系统上同一软件的不同版本。在您的情况下,您将可以使用gcc的几种偏斜,并且会偏爱其中一种。

要找出gcc的当前优先级,请键入@tripleee的注释指出的命令:

update-alternatives --query gcc

现在,请注意归因于gcc-4.4的优先级,因为您需要给gcc-3.3更高的优先级。要设置替代方案,您应该有类似以下内容(假设您的gcc安装位于/usr/bin/gcc-3.3,并且gcc-4.4的优先级小于50):

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.3 50

– 编辑 –

最后,您还可以使用update-alternatives的交互式界面轻松地在版本之间切换。键入update-alternatives --config gcc,要求您从已安装的版本中选择要使用的gcc版本。

-编辑2-

现在,要在系统范围内修复CXX环境变​​量,您需要在.bashrc文件中放入@DipSwitch指示的行(这将仅对您的用户应用更改,我认为这是更安全的):

echo 'export CXX=/usr/bin/gcc-3.3' >> ~/.bashrc

次佳方案

这是jHackTheRipper针对长话短说人群的完整示例。 :-)在这种情况下,我想在默认为4.6的Ubuntu系统上运行g ++-4.5。作为root

apt-get install g++-4.5
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.5 50
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 50
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 100
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.5 50
update-alternatives --set g++ /usr/bin/g++-4.5
update-alternatives --set gcc /usr/bin/gcc-4.5
update-alternatives --set cpp-bin /usr/bin/cpp-4.5

在这里,4.6仍然是默认值(又名”auto mode”),但是我明确地暂时切换到4.5(手动模式)。返回4.6:

update-alternatives --auto g++
update-alternatives --auto gcc
update-alternatives --auto cpp-bin

(请注意,使用cpp-bin而不是仅使用cpp。Ubuntu已经有一个cpp替代品,其主链接为/lib/cpp。重命名该链接将删除/lib/cpp链接,这可能会破坏脚本。)

第三种方案

This is the great description和step-by-step指令说明如何创建和管理主从服务器(gcc和g ++)的替代方法。

很快就是:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
sudo update-alternatives --config gcc

第四种方案

在4.8和6之间且所有--slaves

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 \
                    10 \
                    --slave   /usr/bin/cc cc /usr/bin/gcc-4.8 \
                    --slave   /usr/bin/c++ c++ /usr/bin/g++-4.8 \
                    --slave   /usr/bin/g++ g++ /usr/bin/g++-4.8 \
                    --slave   /usr/bin/gcov gcov /usr/bin/gcov-4.8 \
                    --slave   /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-4.8 \
                    --slave   /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-4.8 \
                    --slave   /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-4.8 \
                    --slave   /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-4.8 \
                    --slave   /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-4.8

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 \
                    15 \
                    --slave   /usr/bin/cc cc /usr/bin/gcc-6 \
                    --slave   /usr/bin/c++ c++ /usr/bin/g++-6 \
                    --slave   /usr/bin/g++ g++ /usr/bin/g++-6 \
                    --slave   /usr/bin/gcov gcov /usr/bin/gcov-6 \
                    --slave   /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-6 \
                    --slave   /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-6 \
                    --slave   /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-6 \
                    --slave   /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-6 \
                    --slave   /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-6

update-alternatives --config gcc在它们之间切换。

第五种方案

现在,有gcc-4.9可用于Ubuntu /precise。

创建一组编译器替代方案,其中发行版编译器具有更高的优先级:

root$ VER=4.6 ; PRIO=60
root$ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$VER $PRIO --slave /usr/bin/g++ g++ /usr/bin/g++-$VER
root$ update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-$VER $PRIO

root$ VER=4.9 ; PRIO=40
root$ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$VER $PRIO --slave /usr/bin/g++ g++ /usr/bin/g++-$VER
root$ update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-$VER $PRIO

注意:使用gcc版本开关会自动更改g ++版本。由于存在”cpp”主备选项,因此必须单独完成cpp-bin。

列出可用的编译器替代品:

root$ update-alternatives --list gcc
root$ update-alternatives --list cpp-bin

要手动选择gcc,g ++和cpp的4.9版,请执行以下操作:

root$ update-alternatives --config gcc
root$ update-alternatives --config cpp-bin

检查编译器版本:

root$ for i in gcc g++ cpp ; do $i --version ; done

恢复发行版编译器设置(此处:回到v4.6):

root$ update-alternatives --auto gcc
root$ update-alternatives --auto cpp-bin

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9413.html,未经允许,请勿转载。