我有一个 C++ 库,可以生成更大的代码,这是我真正期望的。从不到 50K 行的源代码中,我得到几乎 4 MB 的共享对象和推送 9 的静态存档。这是有问题的,因为库二进制文件非常大,而且更糟糕的是,即使是简单的应用程序链接到它通常也会获得 500 到 1000 KB 的代码大小。使用 -Os 之类的标志编译库在一定程度上有所帮助,但不是非常有用。
我还尝试了 GCC 的 -frepo 命令(尽管我看到的所有文档都表明在 Linux collect2 上无论如何都会合并重复的模板)和对似乎“可能”重复很多的模板进行显式模板实例化,但没有两种情况下的实际效果。当然,我说“可能”是因为,与任何类型的分析一样,这样的盲目猜测几乎总是错误的。
是否有一些工具可以轻松分析代码大小,或者我可以通过其他方式找出占用这么多空间的原因,或者更一般地说,我应该尝试的任何其他事情?在 Linux 下工作的东西是理想的,但我会尽我所能。