首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 14链接模块标志'Dwarf版本‘:ID有冲突的行为

iOS 14链接模块标志'Dwarf版本‘:ID有冲突的行为
EN

Stack Overflow用户
提问于 2021-01-15 09:19:57
回答 1查看 582关注 0票数 4

我正在努力使我的应用程序与iOS 14 (Xcode 12.3)兼容。链接阶段生成失败,错误如下:

代码语言:javascript
复制
ld: linking module flags 'Dwarf Version': IDs have conflicting behaviors in 'xxx.o' and 'ld-temp.o'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我在下面找到了解决方案。解决方案是关闭链路时间优化或将链路时间优化从单块更改为增量。

代码语言:javascript
复制
https://stackoverflow.com/questions/39125409/xcode-8-beta-6-conflicting-values-for-architecture
https://github.com/facebook/facebook-ios-sdk/issues/1560

我试图改变链接时间优化从单一的增量,它解决了我的问题。所以我的问题是:

  1. ,有人知道如何调试这种链接冲突问题的根本原因吗?
  2. ,为什么这个链接冲突问题发生在用iOS 14构建时,而不是在以前的版本中?
  3. 正在更改LTO,这是唯一的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2021-05-19 08:07:04

我也有同样的问题。在我的例子中,xxx.o是一个被编译成bitcode的库。我分析了库中的.o文件,它们不是coff文件,也不是男子汉文件。相反,它们是包装bc文件。请参阅https://llvm.org/docs/BitCodeFormat.html

你可以用文件来分析它。问题是,bitcode文件的调试信息存储为Dwarf-2,而.o文件确实具有Dwarf-4。添加-g侏罗-2选项不起作用,因为llvm首先编译为bitcode,即dwarf2。

修复方法是使用llc将包装bc文件的.o文件转换为真正的.o文件。如果您有一个库--它变得更复杂了,您需要首先从库中删除包装好的.o文件,将它们转换为真正的.o文件,并创建一个新的库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65733396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档