Xcode、构建和 dylib

2023-11-30

我查看了一些相关问题,似乎无法为自己找到解决方案。

基本上我在 Xcode 项目中使用 libmp3lame.dylib 。 lame 的安装过程生成了 .dylib 并将其放置在 usr/local/lib 中,为了让 Xcode 构建并运行该项目,我更改了库搜索路径以包含上述文件夹。这很好用。

现在要生成一个发行版本,我想将 .dylib 包含在捆绑包中,以便用户不必忍受安装阶段或类似的事情。我创建了目标的复制文件阶段,这会将 .dylib 转储到捆绑包内容中的 Frameworks 文件夹中。但是,在二进制文件上运行 otool 显示,编译器没有将其链接到 usr/local/lib 版本(即使我删除了该版本),而不是使用捆绑包内的 .dylib。

查看 otool 输出中的其他结果,我有其他框架链接到捆绑包内部,但不是 .dylib。查看 Xcode 中这些框架和 .dylib 的属性,除了文件类型之外,我看不到任何差异。

我的搜索表明我需要使用 rpath 或类似的,但我不知道在 Xcode 中哪里应用它。


我解决这个问题的方法是在终端中执行以下操作(我使用 Automator 来自动执行此操作):

install_name_tool -id @executable_path/../Frameworks/libmp3lame.0.0.0.dylib ~/path/to/lib/in/app/libmp3lame.0.0.0.dylib

install_name_tool -change /usr/local/lib/libmp3lame.0.dylib @executable_path/../Frameworks/libmp3lame.0.0.0.dylib ~/path/to/app/Contents/MacOS/AppName

基本上是将库的路径从 usr 本地库中的路径交换到捆绑包中包含的路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode、构建和 dylib 的相关文章

随机推荐