gpt4 book ai didi

c++ - 模板 - 巨大的目标文件导致链接器崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:19:41 26 4
gpt4 key购买 nike

我有一个广泛使用模板的源文件。我还在那个文件中有不同模板的显式实例化......其中有很多。该文件被编译为静态库的一部分。我编译这个多平台上的库\多体系结构:Win x86,Linux x86 和 Linux ARM。对于 Linux 构建,我使用不同的编译器所以生成的文件(我在这里谈论的是 ELF 文件的上下文本身)不同:对于 GCC,生成的目标文件大小为 8.4MB并且有超过 40000 个 ELF 部分; ARM 编译器(armcc)生成的文件大小为 12.7MB,包含超过 90000 个 ELF部分(!);在这两种情况下,我都有调试信息。

发生的事情是,在链接时,ARM 链接器阻塞并死于尝试在静态库中链接那个巨大的目标文件。经过一些调查似乎它无法处理其中包含超过 65536 个 ELF 部分的目标文件(我仍然有从编译器供应商那里得到确认,虽然......或者我正在做完全和完全错误的东西)。我找到的解决方案是拆分将文件分成多个较小的文件(它的结构和内部允许的内容)。

问题:还有其他替代解决方案吗?可不可能是编译器可能在目标文件中生成额外的代码(在模板的上下文中)在链接阶段之前?

最佳答案

使用 ARM RVCT 编译器 (armcc),尝试将 --remove_unneeded_entities 添加到命令行。这可能会或可能不会产生太大影响,具体取决于您使用的是哪个版本的编译器,但值得一试

关于c++ - 模板 - 巨大的目标文件导致链接器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com