Linuxで小さなcアプリケーションを開発しました。このアプリケーションでは、.hファイルをLinuxの標準パス(/ usr / include)に配置しました。再び私は同じプログラムをコンパイルしています
出力:FATAエラー:xyz.h(自分のヘッダーファイル)が見つかりません
この問題を解決するために、gccまたは方法で変数を更新する必要がありますか?
ありがとうございました
ヘッダー ファイルをファイルと同じディレクトリに配置し、コンパイル時に.c
使用します-I.
gcc -I. main.c -o myprog
/usr/include
システムヘッダー用のヘッダーファイルを配置しないでください。
注: デフォルトでは現在のディレクトリが検索されるため、実際には必要あり-I.
ませんが、追加しても問題はありません。
インクルード ディレクティブで指定されたファイルは、多くの場合 -I オプションで指定されたコンパイラの検索パスの 1 つに配置されることを意図しています (少なくとも gcc の場合、他のコンパイラでも同じですか?)。検索パスは、コマンド ラインで定義された順序で検証されます。
include ディレクティブには 2 種類あります。
#include "xyz.h"
)#include <xyz.h>
)IIRC、前者のデフォルトで最初の検索パスは作業ディレクトリです。後者については、コンパイラに依存しますが、通常は/usr/include/
.
使用した include ディレクティブに応じて、ファイルの正しい場所を選択する必要があります。または、ファイルを適切な場所 (たとえば、インクルード ファイルと同じ場所) に配置し、gcc コマンドに検索パスを追加します。
.h
何も壊さないように、システムおよびリポジトリで構築されたヘッダーからヘッダー ファイルを分離する必要があります。
ホーム ディレクトリに include という名前のフォルダーを作成し、それをパスに追加することをお勧めします。そうすれば、二度と心配する必要がなくなり、-I/
フラグも不要になります。