我正在尝试使用 rpath 链接应用程序的某些库。一些 rpaths 工作其他人没有。
我有两个要链接的动态库,libgunrock
并且libtd
都位于不同的目录中。
我的链接如下所示:
gcc -L/Users/aterrel/workspace/apps/gunrock/build/lib/ -Wl,-rpath -Wl,/Users/aterrel/workspace/apps/gunrock/build/lib/ -lgunrock -L/Users/aterrel/workspace/apps/xdata/xlang/thunderdome -Wl,-rpath -Wl,/Users/aterrel/workspace/apps/xdata/xlang/thunderdome -ltd app-c-gunrock-bokeh.o -o app
加载路径正确。的相关部分otool -l app
:
Load command 16
cmd LC_RPATH
cmdsize 64
path /Users/aterrel/workspace/apps/gunrock/build/lib/ (offset 12)
Load command 17
cmd LC_RPATH
cmdsize 72
path /Users/aterrel/workspace/apps/xdata/xlang/thunderdome (offset 12)
Load command 18
然而我仍然得到错误:
dyld: Library not loaded: libtd.dylib
Referenced from: /Users/aterrel/workspace/apps/xdata/xlang/webgraph/apps/c-gunrock-bokeh/./app
Reason: image not found
Trace/BPT trap: 5
如果我使用DYLD_LIBRARY_PATH=/Users/aterrel/workspace/apps/xdata/xlang/thunderdome
应用程序运行正常。
我不明白为什么libgunrock.dylib
加载得很好但libtd.dylib
不是。