我在用于开发的CentOS 7机器上安装了devtoolset-4软件集。这个软件集包括我想使用的编译器g++ 5.2.1,以及Eclipse CDT4.5 (Mars)。当我在Eclipse中创建一个新的c++项目并导航到项目属性(右键单击项目,然后单击properties -> C/C++ Build -> Environment)时,我可以看到Eclipse已经创建了一个PATH环境变量,该变量在构建项目时被附加到当前路径中。Eclipse定义的路径的值为:
/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
路径中的第一个条目是/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软件集合时,是否有什么不正确的地方?或者这是一个bug?任何洞察力都是非常值得欣赏的。
发布于 2017-04-28 09:18:23
通常,当安装了多个版本的g++时,会提供g++可执行文件的后缀版本,例如g++-4.8、g++-5,这样您就可以使用适当的后缀来选择所需的版本。您可以通过在shell中运行g++-5 (适当设置路径)并查看它是否被解析来验证这一点。
假设是这样的话,您只需要将Eclipse配置为使用g++-5而不是普通的g++。您可以在项目属性-> C/C++ Build ->设置->工具设置中执行此操作。在"GCC命令编译器“、"GCC C编译器”和"GCC命令链接器“下,将”C++“从g++或gcc更改为g++-5或gcc-5。
请注意,GCC最近更改了他们的版本编号。以前,每年发布只会增加第二个版本号(4.7,4.8,4.9),而从版本5开始,每个年度发布都会增加第一个版本号。因此,版本5和更高版本的后缀只是一个数字,例如g++-5,而不是g++-5.2 (而以前的后缀是g++-4.8,g++-4.9等)。
https://stackoverflow.com/questions/43666310
复制相似问题