Xcode 9:将静态框架链接到另一个静态框架

2024-07-01

本着 Xcode 9 的“革命性”功能(即编译静态框架)的精神,我们试图将子项目构建为静态框架,以便它们可以静态链接到主应用程序目标。

我们的子项目之一本身具有静态框架依赖项(Firebase)。当我们将子项目构建为动态框架时,一切正常,但是一旦我们将其切换到 mach-o staticlib ,它就会突然丢失 Firebase 库符号。

这是输出nm分别将我们的子项目构建为动态框架和静态框架:

dynamic:

00000000001c3450 S _OBJC_CLASS_$_FIRApp

static:

                 U _OBJC_CLASS_$_FIRApp

问题是,在这两种情况下,框架都“成功”构建,但一旦与另一个目标(例如测试目标)链接,就会抱怨缺少符号。当子项目本身是静态框架时,我们如何确保 Firebase 框架中的所有符号都嵌入到子项目中?我们尝试了-all_load, -ObjC链接器标志无济于事...


免责声明:仍在寻找最终答案。

在更多地使用静态框架之后,我现在意识到它们不会被链接器自动合并,就像它们合并到可执行/动态目标中一样。

无论如何,我最终将所有静态框架及其子依赖项链接到主要目标。

应该有一种方法可以合并静态框架,而不会使最终框架成为动态库,唉,搜索仍在继续......

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

Xcode 9:将静态框架链接到另一个静态框架 的相关文章

随机推荐

  • Capistrano 3 sudo 任务

    我想用 Capistrano 3 编写一个配方 使用 sudo 在远程服务器上执行任务 使用 Capistrano 2 可以这样做 default run options pty true task hello do run sudo cp
  • 无主与弱者。为什么我们应该更喜欢无主?

    正如 Apple 在 Swift 编程语言 中所说 看来我们应该更喜欢unowned than weak只要有可能 如果捕获的引用永远不会变为 nil 则应始终将其捕获为无主引用 而不是弱引用 来自 弱引用和无主引用 部分这一页 https
  • 使用交叉验证来计算特异性[重复]

    这个问题在这里已经有答案了 我想使用交叉验证来计算特异性 我找到了计算准确度 f1 分数和精度的代码 但我找不到具体的 例如 f1 score 的代码如下 cross val score SVC X y scoring f1 cv 7 或者
  • 无法删除空 S3 存储桶

    我有一个 100 空的 S3 存储桶 存储桶上从未启用版本控制 然而 我仍然无法移除水桶 我已经通过控制台和 CLI 工具进行了尝试 在控制台上它只显示 错误 没有错误消息 从 cli 和 api 中 它告诉我 调用 DeleteBucke
  • URLSession didCompleteWithError nil 错误

    正在开发一个 IOS9 应用程序 该应用程序在 NSURLSessionDelegate 控制器中执行后台 URLSession 我是这样开始的 self session data NSMutableData alloc init NSUR
  • 多个 PHP 会话

    我要为一个网站构建一个 PHP 应用程序 该网站已经有另一个 PHP 应用程序在同一域 服务器上运行 我的应用程序当然会使用会话 并且我不希望我的会话干扰现有应用程序 例如 如果我想使用 SESSION username 也许其他应用程序也
  • 从 swagger 规范文件更新邮递员集合

    我正在将一个 swagger 规范文件导入邮递员以创建一个集合 此时 它按预期工作 并且该集合是使用所有请求和子文件夹生成的 很好 但是当API更新时 我需要更新邮递员以根据新规范更新所有请求 我找不到 更新 或其他操作之类的操作 我正在尝
  • JavaScript:如何将 DOM 元素序列化为字符串以便稍后使用?

    这可能看起来是一个奇怪的请求 而且很不寻常 但这是我正在努力解决的一个挑战 假设您有一个 DOM 元素 它由 HTML 和应用的一些 CSS 以及一些 JS 事件侦听器组成 我想克隆这个元素 以及应用的所有 CSS 和 JS 将其序列化为一
  • 适用于 Canvas HTML5 的 Jquery 画笔大小滑块

    您好 我正在尝试为我的 Canvas 绘图应用程序创建一个画笔大小滑块 有人可以帮助解决这个问题吗 我发现的一些方法与我运行应用程序的 Jquery 库不兼容 谢谢 你的问题在细节上有点简短 O 以下是如何使用 input type ran
  • 为什么 SimpleDateFormat 解析错误的日期?

    我有字符串格式的日期 我想将其解析为实用日期 var date 03 11 2013 我将其解析为 new SimpleDateFormat MM dd yyyy parse date 但奇怪的是 如果我通过 03 08 201309 hj
  • Android升级现有应用程序

    我试图通过更改清单文件中的以下内容来升级现有应用程序 更改自 android versionCode 1 android versionName 1 0 To android versionCode 2 android versionNam
  • React“无法对‘MediaRecorder’执行‘停止’:MediaRecorder 的状态为‘非活动’。”

    我想用ReactJS写一个小型录音网站 但我总是收到这个错误 Failed to execute stop on MediaRecorder The MediaRecorder s state is inactive 这是我编写的代码的一部
  • Hamcrest - 使用什么版本? 1.3或2

    我很困惑 目前我正在使用测试我的 spring 应用程序
  • 根据需要更改图像叠加

    我需要你的帮助 我使用以下命令直播到 Twitch ffmpeg i input mp4 i image jpg filter complex overlay x 10 x 10 s 1920x1200 framerate 15 c v l
  • 在 Firebase 数据库中保存 LocalDate (Java.time) 对象

    我有一堂课 比如说Class A 其中有一个字段LocalDate localDate Java time 我考虑过使用LocalDate因为我想保存 日期 而不保存 时间 我想将此类 A 的对象保存到 firebase 数据库中 作为Lo
  • Antlr4如何构建允许关键字作为标识符的语法

    这是一个演示代码 label var id let id 10 goto label 如果允许关键字作为标识符将是 let var var let var 10 goto let 这是完全合法的代码 但在antlr中似乎很难做到这一点 AF
  • Cakephp 检索 HABTM 的条件

    我正在使用 cakephp 并希望显示属于类别 X 的所有提交内容 我有 4 个具有 HABTM 关系的表 用户 gt haveMany gt 提交 hasAndBelongsToMany 类别 但我想使用 this gt paginate
  • 在 Symfony 2 中使用自定义存储库时显示错误?

    我是 symfony 2 的新手 我尝试在 symfony 2 中使用自定义存储库 在detailsRepository php 文件中编写函数后 在我写的控制器中 em this gt getDoctrine gt getEntityMa
  • iBatis 创建多个注解的数组(注解复用)

    我的问候 我很新iBatis我遇到过这样的优化问题 我有两个完全相同的 Results只有 1 个参数不同 有什么方法可以创建某种注释数组以将其重用于映射 来源看起来像这样 public static interface StoreMapp
  • Xcode 9:将静态框架链接到另一个静态框架

    本着 Xcode 9 的 革命性 功能 即编译静态框架 的精神 我们试图将子项目构建为静态框架 以便它们可以静态链接到主应用程序目标 我们的子项目之一本身具有静态框架依赖项 Firebase 当我们将子项目构建为动态框架时 一切正常 但是一