【发布时间】:2013-10-13 02:55:34
【问题描述】:
我已经使用 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? Freetype2 框架随 OS X/Xcode 的较新版本一起提供,如果您没有正确配置捆绑包,则此 dylib 将在您捆绑在 .app 中的任何 .dylib 之前命中。在命令行工具链中,您需要使用
install_name_tool -change之类的东西来纠正此问题。 -
@AndonM.Coleman,两个操作系统都是一样的。但不知何故,freetype 的 .dylib 正在 /usr/local/opt/..... 我不知道为什么会这样,因为我已经在项目文件夹中包含了 /lib 和 /include for freetype ...在 Xcode 构建设置中设置路径
-
我应该提一下,这不是一个标志,它只是一个命令的开始。当您在 OS X 中的二进制文件上使用
install_name_tool -change时,它用于更改从 .app 包运行时 .dylib 文件的位置。通常它涉及@executable_path/../Frameworks/MyLib.dylib之类的东西。但是,如果您使用的是 Xcode GUI,它应该会在您捆绑您的 .app 时为您执行此操作。看看here。这也已在 SO 上讨论过,但我目前找不到实际问题。
标签: xcode macos opengl homebrew freetype