gpt4 book ai didi

c++ - otool 输出中的相对路径?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:20:54 29 4
gpt4 key购买 nike

我在使用 C++ 编译的库文件时遇到一些问题,所以我使用 otool 命令行实用程序(在 OSX 上)查看它链接的文件。

这是输出:

! 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_python.dylib.

这是什么意思?

这是否意味着在运行时可以链接不同版本的 libboost_python.dylib,具体取决于在路径上最先找到的内容?还是搜索这些“相对”路径的其他方法?

最佳答案

这没问题。这意味着你的库没有绝对路径是相对于你已经 otool'ed (pyopenvdb.so) 的东西。但是,如果您想对其进行标准化,可以使用 install_name_tool 更改路径。在您提到的情况下,请使用 -change 参数。

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

例如,install_name_tool pyopencdv.so -change libboost_python.dylib/usr/local/lib/libboost_python.dylib

请注意,您还会在输出的第一行中看到 pyopenvdb.so 也引用了自身。当然,这是一个相对路径,但如果您想使用 install_name_tool,甚至可以将 that 更改为绝对路径,为此,请使用“-id”参数。

关于c++ - otool 输出中的相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26439319/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com