管理C ++大型静态库

时间:2014-07-03 12:53:39

标签: c++ linux unix static-libraries

我正在一个C ++项目上进行合作,该项目包含大约100,000行代码,这些代码严重交织在一起并构建到两个库中,即#34; util"图书馆和物理学"图书馆。生成的lib文件非常大,使用调试符号编译时大小为265Mb / 1.2Gb,但即使没有它们也是161Mb / 700Mb。然后将它们用于大约30种不同的可执行文件中。

问题在于调试变得非常困难:在一台功能强大的SSD机器上更换一行然后制作一个可执行文件需要30秒。

管理这个问题最明显的策略是将lib文件拆分成多个。多少,即lib文件的理想大小是多少?按字母顺序拆分有什么问题吗? (即以a或A开头的所有.o文件都转到libphysicsA.a等)?

1 个答案:

答案 0 :(得分:0)

你的问题是很长时间的编译,所以显然你必须继续分裂,直到编译时间变得令人满意。最好通过它的部分或使用频率来分割库。将那些主要与意义相关的模块放在一起,或经常/经常使用。按字母顺序拆分将导致您的项目使用太多不同的库部件甚至所有部件,从而减慢编译速度到初始时间值。