12

しようとすると

$ makedepend -f gcc.mak

私のUbuntuマシンのミドルウェアはこれを取得します

/usr/include/../include/limits.h:125:26: エラー: limits.h を検索するインクルード パスがありません

これは、limits.h:125 周辺のコンテンツです。

/* ほとんどすべての ISO 定数を定義するコンパイラの limits.h を取得します。

    この #include_next を二重包含チェックの外に置きます。
    このファイルを複数回インクルードしても取得できるはずです
    gcc のヘッダーからの定義。*/
#if defined __GNUC__ && !defined _GCC_LIMITS_H_
/* `_GCC_LIMITS_H_' は GCC のファイルが定義するものです。*/
# include_next <limits.h>
#endif

設定してみた

$ export INCLUDE=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/
$ export C_INCLUDE_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/
$ export CPLUS_INCLUDE_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/

(これは、システムで別の limits.h を見つけた場所です)。すでに libc6-dev をインストールしていますが、その limits.h が別のパッケージによって上書きされている可能性がありますか? 別の -dev パッケージが必要ですか? または、環境変数が必要です。おそらくこれは他の方法で回避できますか?

4

6 に答える 6

3

クロスコンパイル中にこの問題が発生しました。「makedepend」を実行すると、次の割り当てからわかるように、Makefile は makedepend プログラムを呼び出します。

MAKEDEPPROG=makedepend

makedepend は、で始まるいくつかのデフォルトのインクルード ディレクトリのみを検索します。/usr/include

#include_nextディレクティブは、指定されたインクルード ファイルの次に見つかったインスタンスを検索パスに含めることを意味するため、別のインスタンスが見つからない場合、これは失敗します。

私にとっての解決策は、最初にクロスコンパイラのインクルード ディレクトリを検索するように makedepend に指示することでした。ディレクティブMAKEDEPPROGを含めるように割り当てを変更することでこれを行いました。-I

MAKEDEPPROG=makedepend -I < path/to/cross-compiler/include-fixed >

makedepend プログラムについて読むことをお勧めします (これについては、以前は何も知りませんでした)。たとえば、makedepend が環境検索パスを使用しないことは明らかではありませんでした。この-Iディレクティブは、指定された検索パスを makedepend のデフォルト パスの前に置きます。

于 2016-02-22T19:32:39.047 に答える
2

STLport 5.1.5 でのコンパイルで問題に直面していましたが、STLport 5.2.0 で問題が修正されたようです。この問題は STLportリリース ノートに記載されています。STLport 5.2.1 のコピーを取得した後、コンパイルは問題なく成功しました。

于 2011-06-16T05:21:42.450 に答える
0

必要なパッケージはglibcです。

于 2009-12-26T21:39:18.900 に答える
0

(gcc 拡張機能)を使用して、インクルード パス (ツールセットのコピーである必要があります) で#include_next <limits.h>見つかった次のものを gcc に強制的に参照させることを検討してください。limits.h

于 2009-05-16T08:13:25.890 に答える
-1

解決策はもう正確には覚えていませんが、不足しているパッケージに関係していました。さらにいくつかのものを適切に取得した後、それは私にとってはうまくいきました。

于 2009-08-10T09:35:01.893 に答える