-2

Linuxで小さなcアプリケーションを開発しました。このアプリケーションでは、.hファイルをLinuxの標準パス(/ usr / include)に配置しました。再び私は同じプログラムをコンパイルしています

出力:FATAエラー:xyz.h(自分のヘッダーファイル)が見つかりません

この問題を解決するために、gccまたは方法で変数を更新する必要がありますか?

ありがとうございました

4

3 に答える 3

6

ヘッダー ファイルをファイルと同じディレクトリに配置し、コンパイル時に.c使用します-I.

gcc -I. main.c -o myprog

/usr/includeシステムヘッダー用のヘッダーファイルを配置しないでください。

: デフォルトでは現在のディレクトリが検索されるため、実際には必要あり-I.ませんが、追加しても問題はありません。

于 2012-11-07T15:25:28.917 に答える
0

インクルード ディレクティブで指定されたファイルは、多くの場合 -I オプションで指定されたコンパイラの検索パスの 1 つに配置されることを意図しています (少なくとも gcc の場合、他のコンパイラでも同じですか?)。検索パスは、コマンド ラインで定義された順序で検証されます。

include ディレクティブには 2 種類あります。

  • 二重引用符 ( #include "xyz.h")
  • 山かっこのもの ( #include <xyz.h>)

IIRC、前者のデフォルトで最初の検索パスは作業ディレクトリです。後者については、コンパイラに依存しますが、通常は/usr/include/.

使用した include ディレクティブに応じて、ファイルの正しい場所を選択する必要があります。または、ファイルを適切な場所 (たとえば、インクルード ファイルと同じ場所) に配置し、gcc コマンドに検索パスを追加します。

于 2012-11-07T15:50:19.107 に答える
-1

.h何も壊さないように、システムおよびリポジトリで構築されたヘッダーからヘッダー ファイルを分離する必要があります。

ホーム ディレクトリに include という名前のフォルダーを作成し、それをパスに追加することをお勧めします。そうすれば、二度と心配する必要がなくなり、-I/フラグも不要になります。

于 2012-11-07T15:30:52.623 に答える