• 締切済み

gccのインクルードパスの確認

#include <stdio.h> は デフォルトのインクルードパス(/usr/include/)からstdio.hファイルを 探しますよね? http://oshiete1.goo.ne.jp/kotaeru.php3?q=2006018 ここに書いてあるように gcc -print-search-dirs を実行してみたのですが、/usr/include の記述は 含まれていませんでした。 http://www.sra.co.jp/wingnut/gcc/gcc-j.html で-print-search-dirsのオプションの意味を見てみましたがよくわかりませんでした。

みんなの回答

  • tonasuke
  • ベストアンサー率46% (7/15)
回答No.3

「-v」オプションを使用すれば、gccがどのような動作をしているか全て表示されます。例えは、以下のようにします。 ============================================================ # cat sample.c ←gccを動作させるためには、プログラムが必要(ここではgccのオプションを見たいだけなので、簡単なプログラムでよい。) #include <stdio.h> main() { printf( "Hello, World!!\n" ); } # gcc -v -I./hogehoge sample.c Using built-in specs. Target: i386-redhat-linux コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux スレッドモデル: posix gcc バージョン 4.1.1 20070105 (Red Hat 4.1.1-52) /usr/libexec/gcc/i386-redhat-linux/4.1.1/cc1 -quiet -v -I./hogehoge sample.c -quiet -dumpbase sample.c -mtune=generic -auxbase sample -version -o /tmp/ccjKdz74.s 存在しないディレクトリ "/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../i386-redhat-linux/include" を無視します #include "..." の探索はここから始まります: #include <...> の探索はここから始まります: ./hogehoge ←コンパイルオプションで「-I./hogehoge」を指定したので、そのディレクトリを探している。 /usr/local/include /usr/lib/gcc/i386-redhat-linux/4.1.1/include /usr/include ←「-I」オプションを指定しなくても、デフォルトで探しにいっている。 探索リストの終わり GNU C version 4.1.1 20070105 (Red Hat 4.1.1-52) (i386-redhat-linux) compiled by GNU C version 4.1.1 20070105 (Red Hat 4.1.1-52).  [以下、省略] # ============================================================ gccがどのようなデフォルト設定で動作しているか、確認してみて下さい。表示されない各種オプションが指定されていることもわかるはずです。

bonji0304
質問者

お礼

ありがとうございます。 なるほどー。こんな風にして調べられるのですね。 さっそくやってみます。

  • ogohs
  • ベストアンサー率33% (5/15)
回答No.2

gccで使用されるインクルード場所は、 環境変数INCLUDEに設定されます。 特別設定されていなくても、OSの設定として/usr/include等は 入っています。 特別に追加したい場合は、環境変数INCLUDEに追加するか、 gccのオプションに-I で追加してみてください。

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

-print-search-dirs は、gcc コマンドがコンパイラ等の本体を探すパスなので、#includeのヘッダファイルの検索場所とは無関係です。 /usr/includeを表示するオプションはわかりません。/usr/include 固定だから表示オプションは無いのでは?

関連するQ&A

  • Emacsでのgccのインクルードパスの設定方法

    こんにちは。 Emacsは、Gnu Emacs for Windows 23.4 を使っています。 gccのインクルードパスの問題により、Emcasのcompileコマンドで、Cのソースファイルをコンパイルするができなくて困っています。 具体的には、CのソースファイルをEmacsで開き、「M-x compile」と入力した後、ミニバッファで「gcc -c test.c」と入力すると、以下のようなコンパイルエラーが表示されます。 ------------------------------------------------------------ gcc -c test.c test.c:1:19: no include path in which to search for stdio.h Compilation exited abnormally with code 1 at Sun Jul 08 18:24:05 ------------------------------------------------------------ どうやら、インクルードパスが設定されていないようです。 ちなみに、test.cは以下のような非常に単純なCプログラムです。 ------------------------------------------------------------ include <stdio.h> int main(void) { printf("Hello!\n"); return 0; } ------------------------------------------------------------ コマンドプロンプトや、ktermといった端末から、同じように gcc -c test.c というコマンドを実行すると、エラーが出る事はなく上手くコンパイルできますので、 適切なインクルードパスが設定されているはずです。 どうすれば、Emacsのcompileコマンドから、gccでコンパイルを行う時に使われる、インクルードパスを設定する事ができるのでしょうか? (gccの-Iオプションで、毎回インクルードパスを設定する必要をなくす方法が知りたいです。) では、よろしくお願い致します。

  • KPIT GCCでno include path

    H8のKPIT GNU Tools (v11.02, Windows版) を使ってmakeしたところ、 "no include path in which to search for stdio.h" とエラーが出ます。 エラーの出た行の内容は、 #include <stdio.h> であり、これでエラーが出る理由がわかりません。 試しに、("#include <stdio.h>"を用いる) hello.cを作って、h8300-elf-gccでコンパイルしたところ、特にエラーもなくコンパイルできました。 インクルードパスがおかしいのかとも思いますが、Makefileにはその設定は指定してませんので、デフォルト状態のはずです。 どうぞよろしくお願いします。

  • bccは分かりましたがgccが使えません

    Cのソースの#include <stdio.h>でエラーになります。 gccではbccのbcc32.cfgで行うような設定はどのようにすればよいですか? MINGWのコンソールで $ echo $C_INCLUDE_PATH c:/msys/1.0/mingw/include;c:/msys/1.0/mingw/lib/gcc/mingw32/3.4.5/include このように出ます。 $ gcc myapp.c で#include <stdio.h>の行でコンパイルエラーです。 MINGWでは$C_INCLUDE_PATHを正しく設定できているみたいですが、gcc.exeにそれが伝わっていないみたいです。 AUTOEXEC.BATには何も追記したくないので何も追記していません。 どうすればライブラリのパスを通せますか?

  • gccとPython.hのパス

    cygwinでPythonの拡張モジュールを作成しようとgcc test.c とすると、Python.hがありませんと表示されます。 インクルードパスを通すにはどのようにしたら良いのでしょうか? //test.c #include <Python.h> ..

  • gcc@MinGW:外部コマンドの起動

    MSYS2/MinGW64 on Windows10 の環境で gcc 開発をしています。 下記の簡単なソースを用意します。 #include <stdio.h> #include <stdlib.h> void main() { system("/usr/bin/ls"); exit(0); } なお、/usr/bin/ls の存在は、   $ which ls ↓   /usr/bin/ls にて確認しています。 これを /mingw64/bin/gcc でコンパイルして実行すると、 '/usr/bin/ls' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と表示され、明らかに存在するはずの ls コマンドが起動されません(上記エラーメッセージ中のマルチバイト文字はなぜか cp932 で表示されています)。 ところが、同じソースを /usr/bin/gcc でコンパイルすると、問題なく実行されるのです。 MSYS2 と MinGW の関係がよく理解できていないこともあり、どうしてこのようなことが起こるのか理解に苦しんでいます。 どなたかお心当りのあるかた、お教え下されば幸いです。

  • cygwinのgccが、エラーになってしまいます。

    テストプログラム $ cat test.c #include <stdio.h> int main (void) { printf("Hello, World!\n"); return 0; } これを、コンパイルすると $ gcc test.c gcc: error trying to exec '/usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe': execv: Bad address /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../libcygwin.a(libcmain.o):(.text+0xba): undefined reference to `_WinMain@16' collect2: ld はステータス 1 で終了しました と、このようなエラーが出てきました。 ファイルを確認しても、何も作られていません。 $ ls test.c 対処方法を、ご教示願います。

  • cygwin gcc c99 での isnormal と strtold の使用

    Cygwinのgccで-std=c99オプションを付けて 以下のコードをコンパイルしようとしています。 #include <stdlib.h> #include <math.h> int main() { isnormal(0.123); strtold("0.123", NULL); return 0 ; } $> gcc -std=c99 test_strtold.c ですが、コンパイルできず、2つの関数とも'undefined reference'になります。 -std=c99を付けてコンパイルする方法または この記述と同等の別の記述がありましたらご教授願います。 よろしくお願いいたします。

  • GCCでライブラリが足りない

    はじめまして。 LindowsOS4.0を使っています。 コンパイルができずに困っています。 GCCとMAKEをインストールしました(Lindowsはどちらも入っていないのです。Debian/Woodyベースと言われています)。 gcc 2.95.4 make 3.79.1 which gcc とすると、/usr/bin/gcc と表示されます。 で、./configure すると、 ..... checking whether the C compiler works ... no と表示されコンパイルエラーになります。 configure.log を見ると、 ------------------- checking for gcc configure:916: checking whether the C compiler (gcc ) works configure:932: gcc -o conftest conftest.c 1>&5 /usr/bin/ld: cannot open crt1.o: No such file or directory collect2: ld returned 1 exit status configure: failed program was: #line 927 "configure" #include "confdefs.h" main(){return(0);} --------------------- とか --------------------- checking for gcc configure:905: checking whether the C compiler (gcc ) works configure:921: gcc -o conftest conftest.c 1>&5 /usr/bin/ld: cannot open crt1.o: No such file or directory collect2: ld returned 1 exit status configure: failed program was: #line 916 "configure" #include "confdefs.h" main(){return(0);} ---------------------- とかなっています。 confdefs.hというのは何かのライブラリなのでしょうか?これが無いとconfigureできないのでしょうか?? よろしくお願いいたします。

  • gccを使ってのリンク時のライブラリの指定法

    gccを使って、c++の勉強を始めようとしています。 hello.cpp(どこにでもある一行のプログラム)のコンパイルはできましたが、リンクができません。 私の機械では iostream は /usr/include/c++/3.3.2 にあります。( iostream.hは /usr/include/c++/3.3.2/backward にあります。) また、makefileにこの情報を書くには、どのように書けばよいのでしょうか。

  • BUFSIZのデフォルト値

    AIX6.1 /usr/include/stdio.h 内で定義されている、BUFSIZ値のデフォルト値を教えて下さい。