我们一般都在大量使用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 条目,但那是花生。Visual Studio的/bigobj
选项会将其更改为 2^32。邮件列表结果不知道 GCC 的等效选项。进一步的谷歌结果似乎与此无关。
在这一点上,我们将不得不重构我们的代码(呃)来绕过这个限制。但我仍然担心,由于模板繁重,我们可能会一次又一次地遇到这个问题(我们已经用三个源文件遇到过这个问题)。
所以我的问题是这样的;是否有与微软/bigobj
选项等效的 GCC?我还没有找到第三种选择吗?