gcc を使用して C ファイルをコンパイル中にエラーが発生しました - dce/rpc.h のようなファイル/ディレクトリが見つからないため、エラーが発生しています。どこで探すべきですか?
3 に答える
このコマンドはインクルード パスを出力します。
gcc -xc -v -
私のLinuxボックスでは、結果は次のとおりです。
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc/i586-redhat-linux/4.4.1/include
/usr/include
End of search list.
クロス gcc では、パスを調べるのが非常に難しい場合があります。
#include <...> search starts here:
/opt/OSELAS.Toolchain-2011.11.0/arm-v5te-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/lib/gcc/arm-v5te-linux-gnueabi/4.6.2/include
/opt/OSELAS.Toolchain-2011.11.0/arm-v5te-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/lib/gcc/arm-v5te-linux-gnueabi/4.6.2/include-fixed
/opt/OSELAS.Toolchain-2011.11.0/arm-v5te-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/lib/gcc/arm-v5te-linux-gnueabi/4.6.2/../../../../arm-v5te-linux-gnueabi/include
/opt/OSELAS.Toolchain-2011.11.0/arm-v5te-linux-gnueabi/gcc-4.6.2-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/sysroot-arm-v5te-linux-gnueabi/usr/include
End of search list
find
間違ったパスを取得する可能性があります。
-v オプションを指定してプリプロセッサ (cpp) を実行すると、デフォルトで gcc がインクルード ファイルを検索するディレクトリを見つけることができます。また、各言語には独自の検索パスがあるため、C でない限り、関心のある言語を指定する必要があります。
次に例を示します。
cpp -v -x c++ < /dev/null
前処理するファイルがないことを指定する必要があることに注意してください。それ以外の場合は、stdin からの読み取りを試みます。
上記は、c++ のデフォルトのインクルード パスを示しています。
/usr/include
システムヘッダーであると仮定して、そこから始めて下に進みます。UNIX/Linux システムでは、ほとんどのシステム ヘッダー ファイルがそこに格納されます。
システムヘッダーでない場合は、あなた(または別のサードパーティ)が配置した場所になります(実際にはどこにでもある可能性があります)。それを見つけたい場合は、次のようにすることができます (for xyzzy.h
):
find / -name xyzzy.h 2>/dev/null
期待するヘッダーが見つからない場合は、システムにインストールされていない可能性があります。その方法を理解する必要があります。たとえば、The Open Group には、Linux で使用できるLGPL スタイルの DCE 実装があります。
プラットフォーム (AIX、HP-UX、Solaris など) によっては、パッケージをインストールするだけの簡単な問題になる場合があります。