皆様

かなり初歩的な質問かもしれませんが、お答えください。

現在、C言語であるプログラムを作っています。
そのプログラムに必要なヘッダー(hoge.h)
をincludeするためにプログラム内で
#include<hoge.h>
としてコンパイルしたら「そんなもの存在しない」とコンパイラに怒られました。

このファイルの所在を調べたら/usr/local/includeにあることがわかりましたので、
-I/usr/local/include と明示的にありかを示すオプションに付けてコンパイルしたら
問題なくコンパイルできました。

同様に、上記の本体(?)であるライブラリーは/usr/loca/lib/にあり、コンパイルオプ
ションとして明示的に-L/usr/local/libを設定しない限り、実行ファイルを構成できま
せんでした。

つまり、/usr/local/以下のincludeとlibを使う場合にはコンパイラに明示的にオプション
として渡す必要があるというのが結論なのですが、これはデフォルト状態なのでしょうか?
#いままで、このように明示した記憶がないので、これがデフォルトなのか迷っています。


なお、OSはFreeBSD 7.2-RELEASE-p4 #3: Wed Nov 11 20:46:56 JST 2009で
コンパイラーは
>gcc -v
Using built-in specs.
Target: i386-undermydesk-freebsd
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 4.2.1 20070719  [FreeBSD]

です。

この反応が正常ならMakefileに追加するだけで良いのですが、なぜこうなっているのか微妙に
釈然としていません。

年末でお忙しいと思いますが、お教えいただければ幸いです。

岡村@山梨県

メールによる返信