不必要的 C++ 代码会出现在我完成的程序中吗?
Does unnecessary C++ code end up in my completed program?
假设我包含了一个具有大量功能的 header 文件。
#include "1000Functions.h"
Function1(42);
Function2("Hello");
Function1000("geeks!");
但是,我只想使用 header 中的一些功能。在预处理、编译和链接(例如,使用 g++)之后,我的程序会包含所有 1000 个函数,还是只包含我使用的 3 个函数?
我发现 this article 这很有用。使用 objdump -tC ProgramName
可以向您显示在程序加载到内存中时最终加载到 .text 中的不必要代码。
Link-时间优化是我一直在寻找的,一旦我将这两个标签添加到链接命令中,它对我有用,而不仅仅是 -flto
.
-O2 -flto
假设我包含了一个具有大量功能的 header 文件。
#include "1000Functions.h"
Function1(42);
Function2("Hello");
Function1000("geeks!");
但是,我只想使用 header 中的一些功能。在预处理、编译和链接(例如,使用 g++)之后,我的程序会包含所有 1000 个函数,还是只包含我使用的 3 个函数?
我发现 this article 这很有用。使用 objdump -tC ProgramName
可以向您显示在程序加载到内存中时最终加载到 .text 中的不必要代码。
Link-时间优化是我一直在寻找的,一旦我将这两个标签添加到链接命令中,它对我有用,而不仅仅是 -flto
.
-O2 -flto