繁体   English   中英

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

[英]Templates - huge object file causes linker crash

我有一个广泛使用模板的源文件。 我在该文件中也有不同模板的显式实例化......其中很多。 此文件是作为静态库的一部分编译的。 我在多个平台上编译这个库,用于多种架构: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添加到命令行。 根据您使用的编译器版本,这可能会或可能不会产生太大影响,但值得一试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM