【问题标题】:Eclipse Juno CDT: Incompatibility with C++11 and debugging issuesEclipse Juno CDT:与 C++11 不兼容和调试问题
【发布时间】:2013-04-23 04:37:31
【问题描述】:

在从 Indigo 切换后,Ubuntu 12.04 中的最新 Eclipse Juno 面临各种问题。
我在以下位置设置了标志:
项目 -> 属性 -> C/C++ 构建 -> 设置 -> 工具设置 -> 跨 G++ 编译器

  • -> 其他:-std=c++11
  • -> 预处理器:__GXX_EXPERIMENTAL_CXX0X__(也在 C/C++ General -> Paths and Symbols 中设置)

目前,我正在编译在 Indigo 中使用 C++03 可以正常编译的代码。更改为 C++11 后,我确实遇到了一些可能是由于 g++ 扩展引起的错误,我已经修复了它们。

下面是我要解决的问题:

  1. 如果我切换回正常的 C++ 编译,则会收到一个错误: This file requires compiler and library support for the \ ISO C++ 2011 standard. This support is currently experimental, and must be \ enabled with the -std=c++11 or -std=gnu++11 compiler options. 来自 文件c++0x_warning.h。即使有错误也不会消失 清理构建或重新启动 Eclipse。
  2. 调试未按预期工作。执行确实停止在给定 断点,但是当我将鼠标悬停在变量上时,它不会 显示任何值。在 Indigo 中,它曾经展示过它。做了很多试验和 Eclipse 的各种设置中的错误,但没有运气。还检查了, 窗口 -> 首选项 -> C/C++ -> 悬停,但无法更改 什么都有。
  3. 包含<unrodered_map> 工作正常,但如果 std::unordered_map<> 被使用然后它开始给出错误。目前, 我最不关心这个问题。

如果有人可以建议一个链接或方法来使用 Eclipse (Juno) 进行有效的调试,那么它也将对未来的访问者有很大的帮助。

注意:我在 SO 中提到了几个线程,但没有一个有用:
Eclipse CDT C++11/C++0x support
Cannot set Eclipse Juno C++ with std=c++11
Eclipse CDT Juno - Toolchain issue

【问题讨论】:

  • 附加信息:编译器是 g++ 4.8.0。
  • 放弃日食。救自己。
  • 我也遇到了同样的问题,等我自己检查完再给你答案。

标签: c++ eclipse c++11 eclipse-cdt eclipse-juno


【解决方案1】:

首先,我从全新安装开始,作为未来参考,我想展示如何从头开始安装和使用 GCC 和 Eclipse。

首先到Ubuntu软件中心,下载最新版本的GCC,即GCC 4.8。现在,您这样做可能会遇到问题,因此我建议您在尝试查找软件时输入gcc-4.8。与 g++ 相同,您输入g++4.8 以获得您想要的。确保您拥有正确的版本。由于 Linux 的开源特性,涉及版本的问题往往很多。

-> : 按回车

现在,打开你的终端,输入以下内容:

  • sudo su - -> 这会给你特殊的 root 权限。
  • 现在它会询问您的密码,输入密码 ->
  • !警告,这部分不要出错,因为 root 会造成很大的伤害!
  • 现在更改目录,输入cd /usr/bin ->
  • 输入ls -l gcc* g++* cpp* ->
  • 这将显示可用于这些数据类型的符号链接
  • 输入ln -s g++-4.8 g++->
  • 输入rm cpp gcc ->
  • ln -s gcc-4.8 gcc ->
  • ln -s cpp-4.8 cpp ->
  • 现在 CTRL + D 两次,这会将您移出终端。

现在,打开 Eclipse。转到首选项>新 CDT 向导(或类似的东西) 确保选择了 Linux GCC。请按Make Toochains preferred。 现在,当您打开一个项目时,请确保您转到项目属性,然后执行以下操作:

  • C/C++ 构建 > 设置 > 其他。 > 在其他标志下添加此-std=c++11

  • 与 GCC C 编译器相同,但这次你添加 -std=gnu11

这应该设置一切。不要使用 Cross GCC,它总是给我带来麻烦。

【讨论】:

  • 不要手动删除 /usr/bin/ 中的文件,而是查看 update-alternatives
  • @mythagel :这有时会给我带来问题,所以我避免了它,并给了这个人手动的做事方式。
猜你喜欢
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 2013-11-20
  • 2013-07-01
  • 2011-04-26
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多