質問: gccのコンパイル時に、ライブラリディレクトリ、/usr/lib/内のサブディレクトリ内は自動的に検索されるのでしょうか? また、別の場所にあるディレクトリのシンボリックリンクを/usr/libに置いた場合、検索されるでしょうか? あるいは、ld.so.confなどで明示的に指定する必要があるでしょうか? よろしく、お願いいたします。
回答: 「`gcc` のコンパイル」というのは `gcc` 自体のソースコードをコンパイルするとき(商用 Unix 付属コンパイラで)の話なのか、それとも `gcc` を使って自分の書いたソースファイルをコンパイルするときなのか、どちらかよくわかりませんが Q1. `/usr/lib` のサブディレクトリは検索対象か A1. いいえ Q2. `/usr/lib` 内に symlink を置いたらどうなるか A2. 検索対象になります(が、激しくお勧めしません。 `/usr/lib` 以下はベンダの提供する更新ツール以外で変更しないでください。 Unix を壊す原因になる) Q3. 明示的に指示する必要があるか A3. `/usr/lib` 以外を探させたいなら、必要があります。ライブラリを検索するディレクトリを追加する目的には `gcc -Ldir` を使えばよいので、こっちをお勧めします。 ``` $ gcc -o myapp myapp.o -L/usr/local/lib -lmyown ``` で `/usr/local/lib/libmyown.a` や `/usr/local/lib/libmyown.so` を探してくれます。 よくできている `Makefile` なら(ソースレベルで提供されているツールはたいてい対応済みです)環境変数 `CC` や `CFLAGS` や `LDFLAGS` でいろいろ設定を追加変更できますので、使ってみると吉。