gpt4 book ai didi

xcode - 如何使带有 Homebrew 库的 Xcode 项目可移植?

转载 作者:行者123 更新时间:2023-12-04 02:44:10 24 4
gpt4 key购买 nike

我已经使用 Brew 在我的 Mac 上安装了 FreeType。我的 mac 上的代码工作正常,但是当我尝试在其他 mac 上运行该项目时,我收到了下面提到的链接错误。

dyld: Library not loaded: /usr/local/opt/freetype/lib/libfreetype.6.dylib
Referenced from: /Users/ashutosh/Library/Developer/Xcode/DerivedData/InstrumentChamp-
etytleaabhxmokadgrjzbgtmwxfl/Build/Products/Debug/instrumentchamp.app/Contents/MacOS/instrumentchamp
Reason: image not found (lldb)

当我尝试在其他 mac 上运行代码时,Freetype 的所有库目录和包含目录都包含在项目的“$SRCROOT/”目录中。

您在库的链接错误中看到的路径是 brew 在我创建此项目的 Mac 中安装 freetype 的位置。
/usr/local/opt/freetype/lib/libfreetype.6.dylib

我已将所需的所有 lib/include/目录复制到我的项目的主文件夹中。
我已经设置了库并在 Xcode 中包含了路径。

我在这里缺少什么?我还需要做什么才能使我的代码可移植到任何其他 Mac 上。
我通过安装 Brew 使该项目在其他 mac 上运行,但我想在不需要安装 brew 的情况下进行。

PS:我必须使用 brew 安装 freetype,因为我无法为 32 位处理器的 freetype 编译 .dylib,.dylib 的 64 位副本给了我错误,例如“错误的架构!”

最佳答案

我在评论中得到的基本想法是,OS X 在搜索库的位置方面非常愚蠢,它将使用编译期间使用的相同绝对路径在运行时解析它们。

通常,当您想将应用程序部署/分发到与构建它的机器不同的机器时,您会将您的库包含在安装包/捆绑包中。但是您可能希望它们在运行时使用相对于您的应用程序的路径,因此 install_name_tool -change 允许您用相对路径替换讨厌的绝对路径。

希望这是有道理的,Apple 让在 OS X 上使用系统范围的框架变得非常容易,而不是自定义库。如果您使用系统范围的框架进行编译,/System/Library/Frameworks/...在所有 OS X 安装上普遍可用(给定相同的目标发布版本)。

为了解决您的问题,我将执行以下操作:
install_name_tool -change /usr/local/opt/freetype/lib/libfreetype.6.dylib @executable_path/lib/libfreetype.6.dylib <executable_name_here>
然后它将停止在编译软件时所在的位置查找 libfreetype.6.dylib,而是在运行时相对于可执行文件的位置搜索它(在本例中,在子目录 lib/ 中) .

关于xcode - 如何使带有 Homebrew 库的 Xcode 项目可移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209515/

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