sta*_*oat 68 macos terminal command-line darwin dynamic-linking
我想使用改变可执行文件的rpathinstall_name_tool,但我无法弄清楚rpath现在是什么.install_name_tool需要在命令行上给出旧的和新的rpath.我可以使用什么命令在macOS下打印可执行文件的rpath?
NSG*_*God 88
首先,要了解可执行文件不包含单个rpath条目,而是包含一个或多个条目的数组.
其次,您可以使用otool列出图像的rpath条目.使用otool -l,您将获得如下输出,最后是rpath条目:
Load command 34
cmd LC_LOAD_DYLIB
cmdsize 88
name /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (offset 24)
time stamp 2 Wed Dec 31 19:00:02 1969
current version 1038.32.0
compatibility version 45.0.0
Load command 35
cmd LC_RPATH
cmdsize 40
path @loader_path/../Frameworks (offset 12)
Run Code Online (Sandbox Code Playgroud)
查找LC_RPATH命令并记下path条目下的路径.
pla*_*cel 13
您可以使用otool -l myexecutable,但是如果您只对rpath的列表感兴趣,这会打印出很多不必要的信息。
您可以通过以下方式过滤otool -l到相关rpath条目的输出
otool -l myexecutable | grep RPATH -A2
Run Code Online (Sandbox Code Playgroud)
我发现我可以在 macOS 上使用打印共享库的安装名称
otool -D mylib
Run Code Online (Sandbox Code Playgroud)
此外,我可以通过将-id标志传递给 来直接设置安装名称,而无需参考旧的安装名称install_name_tool:
install_name_tool -id @rpath/my/path mylib
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31397 次 |
| 最近记录: |