3

Ubuntu 13.04 で Eclipse Juno を使用して、raspberry pi の開発を行っています。このガイドに従ってクロスコンパイル ツールチェーンを構成しました: http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/

ラズベリー pi でhello world プログラムを正しくコンパイルして実行できるようにしましたが、Eclipse はすべての STL インクルードにエラーとして注釈を付けます。

私が試したこと:

  • プロジェクトの再構築
  • インデックスの再構築 (インデックス -> 再構築)

構成にいくつかのパスが欠けていると思いますが、どのパスかわかりません。私はグーグルでかなりの量の調査を行いましたが、この問題に対する特定の解決策を見つけることができませんでした.

問題は、ビルド コマンドで使用されている C++ STL インクルード パスを表示するように Eclipse を構成するにはどうすればよいかということです。(arm-linux-gnueabihf-g++)

更新:

以前やみくもにコピー アンド ペーストしたインクルード パスを調べていたところ、そのうちの 1 つが C++ STL を指しているはずでしたが、フォルダー構造が十分に深くなっていないことに気付きました。に変更.../include.../include/c++/4.7.2て修正し、STLがEclipseで表示されないように修正しました。

しかし、ここで新たな問題が発生しました。たとえば、ファイルをインクルードすると#include <string>、文字列型を使用できません。のすべてのインスタンスに下線が引かれstring、「Type 'string' could not be resolved. しかし、Eclipse を再起動すると、エラーは消えます...コードに変更を加えるまでは、赤い線が元に戻ります」と表示されます。それでも、プログラムは正常にコンパイルされます。

4

2 に答える 2

0

そのため、C++ STL へのインクルード パスを別のものに変更してから元に戻すだけで、私の問題は修正されたようです。

手順:

  1. STL へのインクルード パスを見つけ、それを から.../includeに変更します。.../include/c++/4.7.2
  2. 日食を再起動すると、部分的に機能していることに気付くかもしれません(質問で言及した奇妙な動作がまだありました)
  3. .../include/c++/4.7.2元に戻す.../include
  4. Eclipse を再起動すると、動作するはずです。
于 2013-06-25T07:23:45.963 に答える
0

CDT は非常に気まぐれな場合があります。ただし、パスが間違っていると、プログラムが正しく実行されないため、コンパイラは STL を認識します。いくつかのサードパーティ ライブラリ (ソース ファイル) をインポートしているときにこの種の問題が発生し、インクルードの順序を切り替えて修正しました。あなたの場合、それはもっと複雑かもしれません...

このエラーを取り除くことができない場合でも、いくつかの特定のエラーを無効にして単純な警告に変えることができますが、これは少しエラーが発生しやすく危険です:

Project > Properties > C/C++ General > Code Analysis > Use project settings > Switch the errors that are bugging you into warnings

頑張ってください。

于 2013-06-24T03:37:42.533 に答える