我有一个隐含加载几个。所以库的可执行文件,所有的人都被我建。对于部署,或至少测试/调试,我想有他们都在同一个目录下:如何在Linux rpath中对可执行文件位置进行编码?
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
注意,形成可执行的rpath在OS X中使用Linux的@loader_path/.
,最接近我可以来这是
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上完成同样的事情吗?
这就是它!谢谢。 –