我们在IT技术方面大量使用了boost::serialization和模板。一切看起来都很顺利。
然而,在Windows构建中出现了问题。似乎会导致目标文件过大。我们正在使用带有g++ 4.7.0的MinGW/Msys。
然而,在Windows构建中出现了问题。似乎会导致目标文件过大。我们正在使用带有g++ 4.7.0的MinGW/Msys。
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 条目,但这只是小事。Visual Studio 的 /bigobj
选项将把它更改为 2^32。邮件列表的结果不知道 GCC 的等效选项。进一步的谷歌搜索似乎与此无关。
在这一点上,我们将不得不重构我们的代码(呃)。但我仍然担心,在使用大量模板时,我们可能会一次又一次地遇到这个问题(我们已经在三个源文件中遇到了这个问题)。
因此,我的问题是:是否有 GCC 等效于 Microsoft 的 /bigobj
选项?是否有第三个选项我还没有找到?