我想用最新版本的 编译我的程序gcc
。
Ubuntu 14.04 附带 gcc 4.8.2,但还有 4.9.0 可用,而且,我发现它可以作为包使用:gcc-4.9
。我尝试安装它
sudo apt-get install gcc-4.9
但它说
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'gcc-4.9-base' for regex 'gcc-4.9'
gcc-4.9-base is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
看起来它已经安装了,只是不是默认的?我如何使用它来构建我的程序?
答案1
正确安装 gcc-4.9 并将其设置为默认 gcc 版本的最佳方法是使用:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
带有--slave
的g++
会导致g++
与 一起切换gcc
为同一版本。但是,此时 gcc-4.9 将是您在 中配置的唯一版本update-alternatives
,因此将 4.8 添加到update-alternatives
,因此实际上有一个替代方案,方法是使用:
sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
然后,您可以检查设置了哪一个,并使用以下命令来回更改:
sudo update-alternatives --config gcc
如果您遇到 update-alternatives gcc 优先级 60 不高于以前安装的版本的问题,您可以使用以前的 update-alternatives --config gcc 命令来检查已安装的版本并使用:
sudo update-alternatives --remove gcc
或者:
sudo update-alternatives --remove-all gcc
注意:您可以跳过安装 PPA 存储库并直接使用,/usr/bin/gcc-4.9-base
但我更喜欢使用最新更新的工具链。
对于 GCC 5.X 或 6,软件包(以及相应的命令)被称为gcc-5
、gcc-6
等。这是由于GCC 的版本方案其中 5.1 是第一个 GCC 5 版本,并且未来的 5.X 版本将修复错误。
答案2
终极超级大师兼容性表
好的,让我们这样做:
GCC clang
+-------------------------+--------------------------------+
| 13 12 11 10 9 8 7 6 5 4 | 16 15 14 13 12 11 10 9 8 7 6 5 |
+-------+-------------------------+--------------------------------+
| 23.10 | D M M M M | D M M M |
| 23.04 | M D M M M | M D M M |
| 22.10 | D M M M | D M M |
| 22.04 | M D M M | D M M M |
| 21.10 | D M M M | D M M M M |
| 21.04 | M D M M M | D M M M |
| 20.10 | D M M M | D M M M M M |
| 20.04 | P D M M | D M M M M |
| 19.10 | D M M | |
| 19.04 | M D M M | |
| 18.10 | D M M M | |
| 18.04 | P P M D M M | M M M D M |
| 16.04 | P P P P D M | |
+-------+-------------------------+--------------------------------+
德:默认 GCC
sudo apt-get update sudo apt-get install gcc g++ gcc --version
无论
gcc
包别名为:https://packages.ubuntu.com/search?keywords=gcc并且还出现在清单中:如何列出默认安装的软件包?米:存在于主仓库中
sudo apt-get update sudo apt-get install gcc-X g++-X gcc-X --version
所有与给定 GCC 版本匹配的 Ubuntu 版本,例如 GCC 7:https://packages.ubuntu.com/search?keywords=gcc-7或者 clang 7https://packages.ubuntu.com/search?keywords=clang-7
这些软件包的次要版本会不时更新,例如 8.3.0 到 8.4.0。
磷:
ppa:ubuntu-toolchain-r/test
,它由 Ubuntu 人员拥有,因此可以相信它不是病毒,尽管它可能不稳定:sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-X g++-X gcc-X --version
完整列表:https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
这些软件包的次要版本会不时更新,例如 8.3.0 到 8.4.0。
表格上的空白处表示“没有可用的软件包”或“我没费心检查”。值得注意的是,我并没有仔细研究过 PPA 软件包。接受编辑。
所有问题:
- 在 Ubuntu 18.04 上安装 gcc-9?
- 如何安装 gcc-7 或 clang 4.0?
- 在 Ubuntu 18.04 上安装 gcc-9?
- Ubuntu 18.04 中有哪些 GCC 和 clang 版本?
如何将非默认的 GCC 设置为默认?
例如,您安装了/usr/bin/gcc-7
但您想/usr/bin/gcc
在运行时使用它而不是gcc main.c
。
sudo update-alternatives
按照其他答案中提到的使用:https://askubuntu.com/a/581497/52975它为您创建所需的符号链接。
也可以看看:`update-alternatives` 到底起什么作用?
如何从源代码构建自己的工具链
如果 PPA 对你来说还不够旧/新,请参阅以下内容:
- https://stackoverflow.com/questions/847179/multiple-glibc-libraries-on-a-single-host/52454603#52454603
- https://stackoverflow.com/questions/26305738/can-i-build-gcc-for-arm-with-an-x64-one/26306591#26306591
旧 GCC 版本问题
答案3
使用工具链测试构建 PPA:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
我认为 GCC 4.9 尚未完全适用于 Ubuntu 14.04。基础软件包(gcc-4.9-基础)和 GCC Go 4.9 编译器(gccgo-4.9) 可用,但其他前端不可用。我不知道为什么。
答案4
要具体调用 gcc 4.9,请gcc-4.9
在命令提示符下使用。
您安装的所有 gcc 版本都可以通过在 末尾添加连字符和版本号来单独调用gcc
。 在您的例子中,gcc-4.8
和gcc-4.9
应该可用。 在终端中,输入gcc-
(注意连字符)并按两次按钮以查看是否安装了任何其他版本。
请注意,默认 gcc 可能仍为 4.8。(用于gcc -v
验证这一点。)不幸的是,如果您从默认存储库安装了 gcc-4.9,则更改默认值并不是一件容易的事,因为它没有添加 update-alternatives 条目。如果您对如何更改默认值感兴趣,请参阅此问题的答案这个问题。