我想做一个命令行工具,它需要几个捆绑的框架(SDL和相关库)。我将Xcode设置为“嵌入和签名”这些框架,这会导致它们被复制到可执行文件旁边的build文件夹中。生成的可执行文件可以在Xcode中正确运行。
但是,当我尝试在命令行上运行相同的可执行文件时,它失败了,错误为:
dyld: Library not loaded: @rpath/SDL2.framework/Versions/A/SDL2
Referenced from: /Users/jstrout/Data/CPP-dev/soda/Build/Products/Debug/./soda
Reason: image not found
zsh: abort ./soda即使相对于当前(和可执行的)目录,镜像实际上位于SDL2.framework/Versions/A/SDL2。问题似乎是rpath设置不正确。我的所有搜索都表明我应该在我的可执行文件上的otool -l的输出中找到一个LC_RPATH命令,但实际上里面根本没有LC_RPATH命令(尽管有几个LC_LOAD_DYLIB命令引用了@rpath)。
所以。我必须在Xcode中做什么才能让它的链接器发出正确的LC_RPATH命令?或者,如果我完全找错了方向:如何让我的命令行可执行文件引用就在它旁边的框架?
发布于 2021-08-01 14:09:07
答案似乎是(感谢@Siguza):
-rpath @executable_path/构建现在在可执行文件中生成一个适当的LC_RPATH命令,并且它能够找到位于它旁边的框架。
https://stackoverflow.com/questions/68596832
复制相似问题