いくつかの .so ライブラリを暗黙的にロードする実行可能ファイルがあり、それらはすべて私がビルドしました。展開、または少なくともテスト/デバッグのために、それらをすべて同じディレクトリに配置したいと思います。
my_executable
libmylib1.so
libmylib2.so
実行可能ファイルがライブラリを暗黙的にロードするようにするには、実行可能ファイルのディレクトリに rpath (DT_RUNPATH) を設定したいと思います。OS X では、次のようにします。
clang -dynamiclib -o libmylib1.dylib -install_name @rpath/libmylib1.dylib src1.c src2.c
clang -dynamiclib -o libmylib2.dylib -install_name @rpath/libmylib2.dylib src3.c src4.c
clang -o my_executable -L. -llibmylib1.so -llibmylib2.so -Wl,-rpath,@loader_path/. main.c
@loader_path/.
OS Xで実行可能ファイルのrpathを形成することに注意してください.Linuxでは、これに最も近いのは
gcc -dynamiclib -o libmylib1.so src1.c src2.c
gcc -dynamiclib -o libmylib2.so src3.c src4.c
gcc -o my_executable -L. -llibmylib1.so -llibmylib2.so -Wl,-rpath=. main.c
ここでの問題は、Linux では rpath が実行可能ファイルのディレクトリではなく、現在の作業ディレクトリに従うことです。Linuxで同じことを達成する方法はありますか?