Eclipse 中科学 Linux 上的 C++14
Posted
技术标签:
【中文标题】Eclipse 中科学 Linux 上的 C++14【英文标题】:C++14 on Scientific Linux in Eclipse 【发布时间】:2015-08-10 04:01:31 【问题描述】:我的操作系统是
Linux version 2.6.32-220.7.1
(gcc version 4.4.6 20110731 (Red Hat 4.4.6-3)
由于各种不由我决定的原因,我无法升级它,所以让我们忽略该选项。
我的 gcc 版本是
Package gcc-c++-4.4.6-3.el6.x86_64 already installed and latest version
而且我无法升级它,从上面的消息中可以看出。
当我在 eclipse 中使用以下标志时:
-c -fmessage-length=0 -std=c++1y
我没有收到任何投诉。但是,我不能做-std=c++14
,因为我得到了
g++: error: unrecognized command line option ‘-std=c++14’
make: *** [2.5/Base.o] Error 1
这里到底发生了什么?我真的在 C++14 上吗?为什么我不能升级 gcc?为什么 C++14 标志不行,而 C++1y 是?如何轻松测试 C++14 功能以确保我真的在使用它?
谢谢
【问题讨论】:
你使用的是哪个redhat linux? 您拥有的 linux 发行版没有更新 gcc 超过 4.4.6。因为发行版已被冻结,开发人员已继续为更高版本提供支持。期望您升级发行版或使用您拥有的漂亮且稳定的版本。如果您愿意,可以从其他来源下载更新。不完整的 C++14 支持从 gcc 4.9 开始。此链接可能会有所帮助:***.com/questions/17139462/… 我应该补充一点,升级 GCC 和支持新 GCC 所需的软件包很可能会破坏 linux 安装中的一些其他内容。这就是发行版支持被冻结的原因。测试这些东西以确保升级或修复不会破坏其他东西可能会非常耗时,更不用说如果它确实破坏了一些更新的所有工作。 【参考方案1】:GCC 4.4.6 于 2012 年发布,在 ISO 2011 标准完成后不久。 C++11 支持仍然是高度实验性的和不完整的。对于 c++14,您需要更新的编译器。
在 Linux 中,您可以在您的用户目录中安装最新的 c++ 编译器。如果随后将$HOME/bin
添加到$PATH
并将$HOME/lib
添加到$LD_LIBRARY_PATH
,则可以在没有root 权限的情况下运行新的编译器。
您可以按照https://gcc.gnu.org/install/ 中的步骤操作,除了在“配置”步骤中使用以下命令:
wget ftp://ftp.nluug.nl/mirror/languages/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2
tar -jxvf gcc-5.2.0.tar.bz2
cd gcc-5.2.0/
./configure --prefix=$HOME
make -j7
make install # NO root priviledges required!
export PATH=$HOME/bin:$PATH
which gcc # Should say <home dir>/bin/gcc
gcc --version # Should say 5.2.0
我的笔记本电脑有 8 个内核,如果您有不同的数字,请相应地更改 make -j7
中的参数。构建 gcc 仍然需要相当长的时间。
Gcc 实际上构建了 3 次:首先使用可用的编译器构建中间编译器,然后使用中间编译器构建最终的 gcc。中间编译器在功能上等同于最终编译器,但优化程度较低。最后,使用最终编译器重新编译gcc,并检查是否与最终编译器完全相同,从而检查最终编译器的正确性。你也得到了一个fortan和java编译器;-)
如果您的 ./configure
失败,请仔细阅读细则以了解您缺少哪些先决条件。我在 Ubuntu 上,所以我无法帮助您...
【讨论】:
非常感谢您,EvertW。不幸的是,我无法打开您发布的网址。您能否使用有关如何安装最新 C++ 编译器的详细说明来编辑您的答案?然后我会继续接受你的回答。再次感谢以上是关于Eclipse 中科学 Linux 上的 C++14的主要内容,如果未能解决你的问题,请参考以下文章
如何在 nvidia Nsight eclipse 中使用 GNU 科学库 (gsl)
在 linux 上的 eclipse 中清理项目不会删除 Debug/Release 文件夹