1

我在用于开发的 CentOS 7 机器上安装了 devtoolset-4 软件集合。这个软件集合包括我要使用的编译器 g++ 5.2.1,以及 Eclipse CDT 4.5 (Mars)。当我在 Eclipse 中创建一个新的 c++ 项目并导航到项目属性(右键单击项目,然后属性 -> C/C++ 构建 -> 环境)我可以看到 Eclipse 已经创建了一个 PATH 环境变量,它被附加到当前构建我的项目时的路径。Eclipse 定义的 PATH 的值为:

/bin:/opt/rh/devtoolset-4/root/usr/bin:/opt/rh/rh-java-common/root/usr/bin:/usr/lib64/qt-3.3/bin:/home/kts /perl5/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/sbin:/home/kts/.local/bin:/home/kts/bin

PATH 中的第一个条目是 /bin,在 CentOS 7 上它是 /usr/bin 的符号链接。/usr/bin 是从官方 CentOS 存储库安装的 g++ 4.8.5 二进制文件。这导致 Eclipse 使用 g++ 4.8.5 构建我的项目,而不是我实际希望它使用的版本,即 /opt/rh/devtoolset-4/root/usr/bin 目录中的 g++ 5.2.1 二进制文件( PATH 中的第二个条目)。如果我从 Eclipse PATH 变量中删除 /bin 条目,我的项目将使用所需的 g++ 5.2.1 构建。

不过,我有点犹豫是否要依靠此修复程序继续前进,因为我预计在 devtoolset-4 中包含的 Eclipse 版本中创建的项目将与 devtoolset-4 中包含的 g++ 版本开箱即用。有没有其他人遇到过这个问题?在使用 devtoolset-4 软件集合时,我有没有做错什么?或者这是一个错误?非常感谢任何见解。

4

1 回答 1

0

通常,当g++安装了多个版本时,可执行文件的后缀版本g++- 例如g++-4.8g++-5- 可用,以便您可以使用适当的后缀选择所需的版本。g++-5您可以通过在 shell 中运行(适当设置 PATH)并查看它是否已解决来验证是否是这种情况。

假设是这种情况,您只需将 Eclipse 配置为 useg++-5而不是 plain g++。您可以在项目属性 -> C/C++ 构建 -> 设置 -> 工具设置中执行此操作。在“GCC C++ 编译器”、“GCC C 编译器”和“GCC C++ 链接器”中的每一个下,将“命令”从g++或更改gccg++-5gcc-5

请注意,GCC 最近更改了它们的版本编号。虽然以前,年度版本只会增加第二个版本号(4.7、4.8、4.9),但从版本 5 开始,每个年度版本都会增加第一个版本号。因此,版本 5 和更高版本的后缀只是一个数字,例如g++-5,不是g++-5.2(而以前它是g++-4.8g++-4.9)。

于 2017-04-28T01:18:22.847 回答