独自の共有ライブラリを多数使用するプロジェクトを作成しています。私の意図は、ディレクトリ内にライブラリ名を作成することです. /bar (/usr/lib/libfoo/bar.so または /opt/lib/libfoo/bar.so などを見つけるため)。
私はテストするために本当に小さなコードを作りました:
const char *mylib(void) {
return "it woooorks! =D";
};
そしてそれをコンパイルしました: gcc -fPIC -shared -Wl,-rpath,libfoo/ lib.c -o /usr/lib/libfoo/bar.so
.
次に、テスト プログラムで を使用しgcc -lfoo/bar test.c
、コンパイルします (mylib()
ライブラリからシンボルが見つかります) が、プログラムを実行しようとすると ( ./a.out
)、ダイナミック リンカはライブラリが見つからないと文句を言います。私の場合、Mac OS X Lion を使用しています。
dyld: Library not loaded: bar.so
Referenced from: /Users/takanuva/tmp/lib/./a.out
Reason: image not found
Trace/BPT trap: 5
私は何を間違っていますか?おそらく答えは「すべて」なので、ライブラリパスで libfoo.so の代わりに libfoo/bar.so を探すために、どのように目的の効果を達成する必要がありますか?
前もって感謝します。:)