耳蜗输出的相对路径? 我从C++编译的库文件中遇到了一些问题,所以我使用了 oOrth[/COD>命令行实用程序(OSX)来查看它链接的文件。

耳蜗输出的相对路径? 我从C++编译的库文件中遇到了一些问题,所以我使用了 oOrth[/COD>命令行实用程序(OSX)来查看它链接的文件。,c++,linker,otool,C++,Linker,Otool,这是输出: ! otool -L pyopenvdb.so pyopenvdb.so: pyopenvdb.so (compatibility version 0.0.0, current version 0.0.0) /usr/local/opt/tbb/lib/libtbb.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/local/lib/libHalf.11.dylib (compa

这是输出:

! otool -L pyopenvdb.so 
pyopenvdb.so:
    pyopenvdb.so (compatibility version 0.0.0, current version 0.0.0)
    /usr/local/opt/tbb/lib/libtbb.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/local/lib/libHalf.11.dylib (compatibility version 12.0.0, current version 12.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /usr/local/lib/libIlmImf-Imf_2_1.21.dylib (compatibility version 22.0.0, current version 22.0.0)
    /usr/local/lib/libjemalloc.1.dylib (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.5)
    libboost_python.dylib (compatibility version 0.0.0, current version 0.0.0)
    libopenvdb.so.2.3.0 (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
链接到的大多数文件都由绝对路径引用,例如
/usr/local/opt/tbb/lib/libtbb.dylib

但是,有些文件被似乎是相对路径的文件名引用,例如
libboost\u python.dylib

这是什么意思


这是否意味着在运行时可以链接不同版本的
libboost\u python.dylib
,具体取决于路径上首先找到的内容?或者是通过其他方法来搜索这些“相对”路径?

这没有问题。这意味着,没有绝对路径的库相对于您所使用的对象(pyopenvdb.so)是相对的。 但是,如果您想将其标准化,可以使用install\u name\u工具更改路径。在您提到的案例中,使用-change参数

Usage: install_name_tool [-change old new] ... [-rpath old new] ... [-add_rpath new] ... [-delete_rpath old] ... [-id name] input
例如,
install_name_工具pyopencdv.so-change libboost_python.dylib/usr/local/lib/libboost_python.dylib

注意,您还可以看到pyopenvdb.so在输出的第一行中也引用了自身。当然,这是一个相对路径,但如果您想使用install\u name\u工具,即使是它也可以更改为绝对路径,为此,请使用'-id'参数

Usage: install_name_tool [-change old new] ... [-rpath old new] ... [-add_rpath new] ... [-delete_rpath old] ... [-id name] input