我们正在大量使用boost::serialization
和一般模板。一切似乎都很顺利。
不过,我们在 Windows 构建上遇到了障碍。这似乎会导致目标文件太大的问题。我们使用 MinGW/Msys 和 g++ 4.7.0。
c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/as.exe: CMakeFiles/source.dir/sourcecode.cpp.obj: too many sections (33396)
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Assembler messages:
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Fatal error: can't write CMakeFiles/source.dir/sourcecode.cpp.obj: File too big
谷歌大师透露了这条存档消息,
其中,它表明另一个人遇到了几乎相同的障碍。它确实指出了 Visual Studio 的一个选项/bigobj
选项似乎可以满足我们的需要。但是,我们无法迁移到 Visual Studio。
一项建议是将 --hash-size 添加到汇编器选项中。这没有帮助。
如果我没记错的话,问题在于目标文件中的条目数限制为 2^16。实际上,根据错误消息,我敢说这是一个签名的 2^16 条目,但这只是花生。这/bigobj
Visual Studio 的选项会将其更改为 2^32。邮件列表结果不知道 GCC 的等效选项。进一步的谷歌结果似乎与此无关。
此时我们必须重构我们的代码(呃)来解决这个限制。但我仍然担心,使用大量模板,我们可能会一次又一次地遇到这个问题(我们已经在三个源文件中遇到过这个问题)。
所以我的问题是这样的;有没有相当于微软的GCC/bigobj
选项?还有我还没有找到的第三个选择吗?
解决方案是添加选项-Wa,-mbig-obj
如果您的 GCC 版本支持该选项。您可能只在编译步骤中需要它,而不是链接器步骤中需要它。
如果您的编译器不支持该选项,您应该考虑使用 mingw-w64 和MSYS2 http://msys2.github.io.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)