我有一些代码在静态库中的多个项目之间共享。即使使用函数级链接,我也会得到比我想在输出中更多的目标代码 - see another question about that。将C++代码拆分为多个转换单元是否会导致可执行文件大小的开销?
肯定是最简单的解决方案,以减少的链接到最终的可执行目标代码量会如此,我得到更多的.obj文件每个用更少的目标代码分割的翻译单元。我甚至可以走到极端 - 将每个功能放到一个单独的翻译单元中。
让我们假装我不在乎具有十倍以上.cpp文件引起的混乱,我不在乎可能存在的联系时间的增长。
这样分裂成许多目标文件会引入可执行文件大小的开销吗?可执行文件是否会变得更大?仅仅是因为有十倍于.obj的文件(但总体上它们具有完全相同的函数和变量)链接到它中?
你的功能有多大?在极端情况下,由于调用者保存了寄存器等,所以对函数的调用大于内联函数。 – 2010-03-03 11:08:28
我希望你已经尝试过“strip”命令和编译优化选项。看例如,http://wiki.wxwidgets.org/Reducing_Executable_Size – 2010-03-03 11:12:06
哪个编译器和哪个os? – zebrabox 2010-03-03 11:37:27