Ted*_*ton 9 linux macos gcc rpath shared-libraries
我有一个可执行文件隐式加载几个.so库,所有这些都由我构建.对于部署,或至少测试/调试,我想将它们全部放在同一目录中:
my_executable
libmylib1.so
libmylib2.so
Run Code Online (Sandbox Code Playgroud)
为了让可执行文件隐式加载库,我想为可执行文件的目录设置一个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
Run Code Online (Sandbox Code Playgroud)
请注意,@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
Run Code Online (Sandbox Code Playgroud)
这里的问题是在Linux上,rpath遵循当前的工作目录,而不是可执行文件的目录.有没有办法在Linux上完成同样的事情?
| 归档时间: |
|
| 查看次数: |
2772 次 |
| 最近记录: |