ld警告:太多个性化例程无法紧凑展开以进行编码 [英] ld warning: too many personality routines for compact unwind to encode

查看:121
本文介绍了ld警告:太多个性化例程无法紧凑展开以进行编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我拥有的iOS模拟器目标的链接器报告以下警告:

The linker for an iOS simulator target I have is reporting the following warning:

ld: warning: too many personality routines for compact unwind to encode

没有给出行号,也没有其他可操作的内容.谷歌搜索出现了一些 Apple开源代码,但是我不是在抱怨它.

No line number is given, nor anything else that is actionable. Googling turned up some Apple open source code, but I'm not groking it.

这是什么意思,我该怎么解决?

What does it mean and what can I do to address it?

推荐答案

我在用于Itanium文档的C ++ ABI ,这为它的含义提供了一些线索.

I found some information in the C++ ABI for Itanium docs that sheds some light on what this means.

个性例程是C ++(或其他语言)运行时库中的函数,用作系统展开库和特定于语言的异常处理语义之间的接口.

The personality routine is the function in the C++ (or other language) runtime library which serves as an interface between the system unwind library and language-specific exception handling semantics.

外推,此警告表明在同一二进制文件中您有太多种类的异常处理,并且至少其中一种可能会失败.确实,这正是在此问题中观察到的.

Extrapolating, this warning indicates that you've got too many kinds of exception handling in the same binary, and at least one of them may fail. Indeed this is exactly what is observed in this question.

遗憾的是,没有解决此问题的明确方法,只有解决方法.您可以禁止显示警告,删除代码,用另一种语言重写代码,禁用该语言的异常处理以及其他可能的功能.

Sadly, there's no clear way to fix this, only workarounds. You can suppress the warning, remove code, rewrite code in a different language, disable a language's exception handing and possibly others.

这篇关于ld警告:太多个性化例程无法紧凑展开以进行编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆