プロが教えるわが家の防犯対策術!

#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のオプションの意味を見てみましたがよくわかりませんでした。

A 回答 (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がどのようなデフォルト設定で動作しているか、確認してみて下さい。表示されない各種オプションが指定されていることもわかるはずです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/06 22:44

gccで使用されるインクルード場所は、


環境変数INCLUDEに設定されます。
特別設定されていなくても、OSの設定として/usr/include等は
入っています。

特別に追加したい場合は、環境変数INCLUDEに追加するか、
gccのオプションに-I で追加してみてください。
    • good
    • 0

-print-search-dirs は、gcc コマンドがコンパイラ等の本体を探すパスなので、#includeのヘッダファイルの検索場所とは無関係です。



/usr/includeを表示するオプションはわかりません。/usr/include 固定だから表示オプションは無いのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています