如何使带有自制库的 Xcode 项目可移植?

2023-12-20

我已经使用 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 允许您用相对路径替换令人讨厌的绝对路径。

希望这是有道理的,苹果让在 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/).

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

如何使带有自制库的 Xcode 项目可移植? 的相关文章

  • 更改 iterm2 中的用户名、主机名和路径颜色

    如何更改 iTerm2 中的用户名 主机名和路径颜色 我正在使用内置的 Solarized 配色方案 In Ubuntu the same built in colorscheme is highlighted like In iTerm2
  • OpenGL 中的 VBO 到底是什么?

    我正在尝试了解 OpenGL 背后的理论 目前正在研究 VBO 到目前为止我的理解是 当我们声明一系列顶点时 比如说形成一个三角形基元的 3 个顶点 我们基本上不会将它们存储在任何地方 它们只是在代码中声明 但是 如果我们想将它们存储在某个
  • RVM 安装问题 - 无法执行端口 (autoconf)

    我正在尝试在 OSX mountain lion 上安装 Jekyll 首先我想安装RVM 然后安装最新的ruby 但是 RVM 安装失败 我无法解决问题 任何帮助表示赞赏 这是我所做的 安装的 OSX 命令行工具 尝试安装 RVM cur
  • 在 Mac 上安装 imagick

    我需要安装 php 的 imagick 扩展 我已经安装了 Image Magick 然后我做了 sudo pecl install imagick 之后我在控制台中有这样的输出 安装 usr include php ext imagick
  • MonoGame Mac 模板安装

    我在 Mac 上的 MonoDevelop 中安装 MonoGame 模板时遇到问题 我已按照自述文件的指示将 MonoDevelop MonoGame 2 5 文件夹放置在 MonoDevelop app Contents MacOS l
  • NSPredicateEditor 行模板不可在界面生成器中配置

    我正在界面生成器的故事板中创建一个辅助表 viewController 包含一个NSPredicateEditor并使用 cocoa 绑定连接到 viewController 的属性 但是 我无法正确配置行模板 当我取消选中其中一个谓词运算
  • XCode 12.5 缺少权利 com.apple.developer.linked-appclip-app-identifiers

    将 Xcode 版本更新到 12 5 后 我遇到了 App Clip 问题 在 App Store Connect 上传期间 我收到警告 TMS 90876 Missing entitlement This app contains an
  • 如何在 Xcode 项目设置中使用相对路径?

    如何在 Xcode 项目设置中使用相对路径 假定 构建设置 中的所有路径都相对于包含 xcodeproj 文件的目录 使用标准 Unix 路径标记 project directory parent directory 因此 如果您的项目文件
  • 具有硬件集成的 iOS 应用程序

    我想开发一个使用外部硬件插件的 iOS 应用程序 有点像 Squarehttps squareup com https squareup com 但是我在苹果的文档中找不到任何参考资料 有人能指出我正确的方向吗 如果您想使用 iPod 连接
  • 尝试在 Xcode 中为 OS X 应用程序设置 Tab 键顺序

    我正在使用 Xcode 7 3 构建 OS X 桌面应用程序 并尝试为其中一个表单设置 Tab 键顺序 我发现有几篇文章解释了 Xcode 4 的类似问题 但没有任何进展 https www youtube com watch v SRrE
  • bash - 从文本文件中删除多行不同的文本

    我正在处理大量日志文件 并且大多数日志文件都有大量被记录多次的重复字符串 为了使与此类事情没有太多关系的其他人 也为我自己 轻松查看日志 我想制作一个脚本来删除一些可能对其他人造成 误报 的文本行 嘿管理员 我多次出现这些错误 gt 叹息
  • Brew Postgresql 启动但进程未运行

    我在 Mac 上通过 Brew 安装了 Postgres 然后 我尝试启动它 gt brew services restart postgres Stopping postgresql might take a while gt Succe
  • 在 mac big sur 上安装其他版本的 python 后,pyenv 版本不显示任何内容

    为什么它不显示我的 python 版本安装 pyenv versions system set by Users axilaris pyenv version 我知道我有 Python 3 6 Big Sur 附带 以及 3 8 和 3 9
  • npm 不起作用,总是出现此错误 -> 错误:找不到模块 'are-we-there-yet'

    我尝试在 Mac 上使用 Yosemite 安装 grunt 节点已经安装在最新版本中 如果我在终端中输入 node v 我会得到 v0 12 5 行 那挺好的 但是当我想用 npm 安装某些东西时 我只得到一个错误 我尝试了 sudo n
  • OpenGL 中的像素间隙从何而来?

    我遇到的问题是 渲染场景中有一些像素 似乎丢失 看不见 因此与我的透明颜色相同 颜色 有趣的是 只有当 MSAA 关闭时才会发生这种情况 我的第一个想法是 这可能与以下事实有关 所有三角形都是重叠的 并且被投影矩阵以某种方式扭曲 但这些伪像
  • 让约束在尺寸类别中发挥作用

    所以 我正在 Xcode 6 beta 中尝试尺寸类 我对图像设置了一些限制 使其根据 iPhone 纵向和横向对应的尺寸类别处于不同的位置 这些限制在下图中可见 正如您所看到的 当我处于紧凑 紧凑状态时 一些约束被 安装 而其他约束则没有
  • Xcode 6.3 Parse SDK 1.7.1 PFTableViewCell 错误“具有不兼容的类型”

    My code override func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath object PFObject gt PFT
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 获取 Swift 子目录中资源的所有 URL

    我正在尝试为 iOS 应用程序的子目录中的所有资源创建 URL 数组 我似乎无法到达正确的路径 即使我不知道名称 我也希望能够检索 URL 即我不想将文件名硬编码到代码中 Below is a screen shot of the hier
  • 如何在 Sublime 2 REPL Mac 中运行 Python 3

    我的问题如下 我安装了 sublime 2 和 sublime repl 插件 一切正常 我唯一需要的是更改在控制台内置的 sublimerepl 上运行的 python 版本 我的意思是 我有 python 2 7 5 预先安装了 mav

随机推荐