0

実際、gcc-4.7.2 をコンパイルするときにこの問題が発生しました。しかし、次のように問題を簡単に再現できます。

テスト用の単純なソース ファイル hello.c があります。その内容は単なる include ディレクティブです:

#include "hello.h"

bash では、最初に次のコマンドを実行します。

export C_INCLUDE_PATH=/home/dwang/local/include:

次に実行します:

gcc -v -E hello.c

検索パスを出力します。

#include "..." search starts here:
#include <...> search starts here:
/home/dwang/local/include
/export/scratch/packages/include/
.
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include
[...]

:次に、から末尾を削除するとC_INCLUDE_PATH:

export C_INCLUDE_PATH=/home/dwang/local/include

検索パスは次のとおりです。

#include "..." search starts here:
#include <...> search starts here:
/home/dwang/local/include
/export/scratch/packages/include/
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include
[...]

に末尾:があれば自動的に追加されるようです。これは gcc の機能ですか、それともバグですか?C_INCLUDE_PATH.

これが私のgccコンパイルをどのように壊すかは、ここに記載されています: Error Compiling gcc-4.7.2

コンパイラ: gcc-4.6.1

OS: Ubuntu 11.10

ありがとう。

4

1 に答える 1

0

ここに文書化されているように、これは gcc の機能です。

ドキュメントから引用:

これらすべての変数で、空の要素はコンパイラに現在の作業ディレクトリを検索するように指示します。空の要素は、パスの最初または最後に表示できます。たとえば、CPATH の値が :/special/include の場合、`-I. -I/special/include'.

于 2013-01-16T15:12:34.423 に答える