0

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 ドキュメントを読みましたが、インクルード ファイル/ディレクトリについては何も述べていません。

ここで何が間違っていますか?

4

1 に答える 1

2

gcc-4.2 パッケージはどの Ubuntu のものですか?

おそらく古いUbuntuリリースのものです。新しい Ubuntu リリースでは、一部のヘッダーとライブラリ ディレクトリが変更されており、古いコンパイラが機能しなくなります。

于 2011-11-11T20:43:31.470 に答える