Eclipse Juno CDT:与C ++ 11的不兼容性和调试问题

时间:2013-04-23 04:37:32

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

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

  • - >其他:-std=c++11
  • - >预处理器:__GXX_EXPERIMENTAL_CXX0X__(也在C / C ++中设置 - >路径和符号)

目前,我正在编译在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。即使使用,错误也不会消失 清理构建或重新启动日食。
  2. 调试无法按预期工作。执行确实在给定时停止 断点,但是当我将鼠标悬停在变量上时,它没有 显示任何值。在Indigo,它曾经用它来展示它。做了很多试验和 Eclipse的各种设置中的错误,但没有运气。还检查, 窗口 - >偏好 - > C / C ++ - >盘旋,但无法改变 什么都有。
  3. 包含<unrodered_map>的工作正常,但是如果 使用std::unordered_map<>然后它开始给出错误。目前, 我最不关心这个问题。
  4. 如果有人可以建议使用Eclipse(Juno)进行有效调试的链接或方法,那么它对未来的访问者也会有很大的帮助。

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

1 个答案:

答案 0 :(得分:1)

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

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

- &GT; :按回车

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

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

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

  • C / C ++ Build&gt;设置&gt;杂项。 &GT;在其他flages下添加此-std=c++11enter image description here

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

应该把一切都搞定。不要使用Cross GCC,它总是给我带来麻烦。