Xcode 没有在 @rpath 中搜索动态库?
Xcode not searching @rpath for dylibs?
在我的 Xcode 项目中,我构建了几个动态库,它们的前缀为“@rpath/lib”。我添加了一个包含这些动态库的 "copy files" 构建阶段。它们安装在 Frameworks 中名为 lib 的文件夹中。我还设置了“@loader_path/../Frameworks”的运行路径搜索路径,当可执行文件 运行s 时,应将其替换为 @rpath。 DLYD 查看我的二进制文件的 运行 路径,我在二进制文件上使用 tool -l 命令检查了该路径。这会产生:
Load command 47
cmd LC_RPATH
cmdsize 40
path @loader_path/../Frameworks (offset 12)
所以我假设当我的二进制文件 运行s 时,DLYD 将通过 MACH-O 二进制文件解析 lib 文件夹的路径。
当我 运行 我的项目时,我使用 Activity 监视器来检查二进制文件打开的文件。我没有看到我的动态库是从它们所在的 @loaderpath/../Frameworks/lib 引用的,而是我看到它们是从 /usr/local/lib 引用的。
我应该设置哪些 Xcode 设置才能正确找到我的动态库?我使用用户定义的构建设置 'DYLD_PRINT_BINDINGS' 查看正在链接的内容,但我没有看到我的库被链接,即使它们最终链接到 /usr/local/lib
中的库
我找到了我前一段时间开发的脚本,我曾经将 .dylib
s 复制到 .app
的 Framework
目录并检测依赖库,修复库引用使用 install_name_tool
。这应该设置为 post-build 脚本。
https://github.com/trojanfoe/xcodedevtools/blob/master/copy_dylibs.py
好久没测试了。根据我的 this question
,该存储库还包含我现在用来 增加版本号 的脚本。
在我的 Xcode 项目中,我构建了几个动态库,它们的前缀为“@rpath/lib”。我添加了一个包含这些动态库的 "copy files" 构建阶段。它们安装在 Frameworks 中名为 lib 的文件夹中。我还设置了“@loader_path/../Frameworks”的运行路径搜索路径,当可执行文件 运行s 时,应将其替换为 @rpath。 DLYD 查看我的二进制文件的 运行 路径,我在二进制文件上使用 tool -l 命令检查了该路径。这会产生:
Load command 47
cmd LC_RPATH
cmdsize 40
path @loader_path/../Frameworks (offset 12)
所以我假设当我的二进制文件 运行s 时,DLYD 将通过 MACH-O 二进制文件解析 lib 文件夹的路径。
当我 运行 我的项目时,我使用 Activity 监视器来检查二进制文件打开的文件。我没有看到我的动态库是从它们所在的 @loaderpath/../Frameworks/lib 引用的,而是我看到它们是从 /usr/local/lib 引用的。
我应该设置哪些 Xcode 设置才能正确找到我的动态库?我使用用户定义的构建设置 'DYLD_PRINT_BINDINGS' 查看正在链接的内容,但我没有看到我的库被链接,即使它们最终链接到 /usr/local/lib
中的库我找到了我前一段时间开发的脚本,我曾经将 .dylib
s 复制到 .app
的 Framework
目录并检测依赖库,修复库引用使用 install_name_tool
。这应该设置为 post-build 脚本。
https://github.com/trojanfoe/xcodedevtools/blob/master/copy_dylibs.py
好久没测试了。根据我的 this question
,该存储库还包含我现在用来 增加版本号 的脚本。