如何解析OSX rpath引用的库?

时间:2016-06-15 21:07:28

标签: macos ld

我想使用其他几个DLL链接DLL但是无法让它们正确解析:

$ g++ -o libsuba.dylib -dynamiclib -Wl,-install_name,@rpath/libsuba.dylib suba.cpp

$ g++ -o liba.dylib -dynamiclib -Wl,-install_name,@rpath/liba.dylib -Wl,-reexport_library,libsuba.dylib a.cpp

上面给出了两个库,liba.dylib和libsuba.dylib。

$ otool -l liba.dylib

...
Load command 10
          cmd LC_REEXPORT_DYLIB
      cmdsize 48
         name @rpath/libsuba.dylib (offset 24)
   time stamp 2 Wed Dec 31 18:00:02 1969
      current version 0.0.0
compatibility version 0.0.0
...

在另一个目录中,我想现在链接liba.dylib:

$ cd build
$ c++ -o b b.cpp ../liba.dylib -Wl,-rpath,..
ld: file not found: @rpath/libsuba.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

然而,这有效:

$ c++ -o b b.cpp ../liba.dylib -L..

有人可以解释为什么显式链接器rpath选项不能替换@rpath宏并允许重新导出的库被定位吗?

0 个答案:

没有答案