Eclipse-CDT Indigo を搭載した Kubuntu 11.10 システムを使用しています。Eclipse とともに gcc-4.6 がインストールされました。それ以来、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 がコンパイラ固有のインクルードの 1 つによって定義されることを期待しているようです。
/usr/include/string.h は libc6-dev パッケージからのもので、コンパイラ固有のバージョンがないようです。パッケージシステムがこれを処理し、適切なバージョンのものをすべてインストールすることを期待していました。
GCC の複数のバージョンに関する GNU ドキュメントを読みましたが、インクルード ファイル/ディレクトリについては何も述べていません。
ここで何が間違っていますか?