我有一个带有Eclipse-CDT Indigo的Kubuntu 11.10系统。 gcc-4.6与Eclipse一起安装。我已经通过Ubuntu软件包安装了gcc-4.4和gcc-4.2。
我可以将/ usr / bin / gcc符号链接切换到4.4或4.6,Eclipse会以任何方式构建我的代码。但是,当我将符号链接设置为使用gcc-4.2时,我收到以下错误(还有更多):
In file included from /usr/include/c++/4.2/cstring:52,
from /usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h:47,
from /usr/include/c++/4.2/iosfwd:45,
from /usr/include/c++/4.2/ios:43,
from /usr/include/c++/4.2/ostream:45,
from /usr/include/c++/4.2/iostream:45,
from ../ProjStructure.h:4,
from ../Scanner.h:3,
from ../Scanner.cpp:1:
/usr/include/string.h:29: error: ‘__BEGIN_DECLS’ does not name a type
所以看来我在/ usr / include中的string.h期望__BEGIN_DECLS由一个特定于编译器的包含定义。
/usr/include/string.h来自libc6-dev软件包,它似乎没有特定于编译器的版本。我希望包系统能够处理这个并安装所有正确版本的东西。
我已经阅读了多个GCC版本的GNU文档,但他们没有提及包含文件/目录的任何内容。
我在这里做错了什么?
答案 0 :(得分:2)
Ubuntu是你的gcc-4.2包吗?
可能来自较旧的Ubuntu版本。新的Ubuntu版本改变了一些标题和库目录,这打破了旧的编译器。