与最新版本一起安装 gcc g++ 的后备版本?

与最新版本一起安装 gcc g++ 的后备版本?

我正在尝试使用 g++ 5 构建一个 SFML 项目。不幸的是,g++ 5 中有一个错误,导致使用某些 SFML 库的构建的链接阶段无法成功通过。

此链接包含有关该错误的更多详细信息。

http://en.sfml-dev.org/forums/index.php?topic=20394.0

我不知道如何使用该解决方法。附加-lgcc_s -lgcc到我的构建命令行不起作用。

我想知道如何安装 gcc/g++ 的后备版本。我们以 4.9 版本为例,因为我非常有信心这个版本可以正常工作。

是否可以这样做,以便我仍然可以保留 gcc/g++ 5 作为我的“默认”或“主要” c/c++ 编译器?我假设我调用g++-4.9而不是仅仅g++使用版本 4.9 来编译程序?

可以这样做吗?如果可以,怎么做?这样做会不会有什么潜在问题(破坏我的系统)?

答案1

您可以随时下载并构建所需的 GCC 版本,然后在 /usr/bin/ 中添加脚本来运行它。还有其他方法可以做到这一点,包括编辑 PATH,但我对细节不是 100% 确定,所以...我猜是脚本。(注意:gcc-xyz 是您要使用的版本,即:gcc-4.9.0。不要输入 gcc-xyz,否则不起作用)

本文来自 OSDev wiki 的介绍如何安装 GCC 版本(它说是最新版本,但是当您从 ftp 镜像下载时您可以选择任何您想要的版本)。

首先从下载所需的 GCC 版本这里

将其解压到 $HOME/src 中。您应该在 $HOME/src 中有一个 gcc 文件夹或类似的文件夹。

转到 gcc-xyz/ 并执行contrib/download_prerequisites 这应该会获得您需要的依赖项的正确版本。

现在决定您是只为自己安装还是全局安装。如果您只是使用它,您可以将其安装在 $HOME/opt/ 或全局 /usr/local/gcc-xyz 中(我认为这并不重要,因为我们将把脚本放在 /usr/bin 中,但不要引用我的话)

现在,执行export PREFIX="$HOME/opt/gcc-x.y.z(或者 /usr/local/gcc-xyz,如果你使用它作为前缀)

现在,根据 OSDev wiki 你想要做的

cd $HOME/src

如果您希望将这些包作为 gcc 的一部分构建: mv gmp-x.y.z gcc-x.y.z/gmp mv mpfr-x.y.z gcc-x.y.z/mpfr mv mpc-x.y.z gcc-x.y.z/mpc

然后:

mkdir build-gcc cd build-gcc ../gcc-x.y.z/configure --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ make make install

现在您可以在 $PREFIX/gcc-xyz 中找到它(应该是 $HOME/opt/cross 或 /usr/local/gcc-xyz)

现在在 /usr/bin 中创建一个名为 gcc-4.9(和 g++-4.9)的文件。在脚本中添加

#!/bin/sh

$HOME/opt/gcc-x.y.z/gcc "$@"

这会将命令中的所有参数传递给此版本的 gcc。(嘘,对 g++ 脚本也执行相同操作)

测试一下看看它是否有效。另外,如果有人在评论中提出建议,请告诉我,因为我可能在某个地方犯了错误。

相关内容