在编译期间包含未使用的代码
Including unused code during compilation
从Makefile构建我的应用程序 我发现从代码中排除某些类及其使用不会影响构建的应用程序的大小。
// some file
// #include "SomeClass.h"
.......
void myfunc()
{
SomeClass _cl;
// do something with _cl etc...
// _cl.SomeFunc();
.........
}
Makefile
......
SOURCES = ... SomeClass.cpp .... etc
但是,如果我从Makefile中删除SomeClass.cpp那么构建的应用程序的大小就会变小。为什么 gcc 不优化编译的代码,也不从最终结果中排除未使用的 SomeClass?
您可以通过编译标志进行配置。在 linux/gcc 上,未使用的符号不会从二进制文件中消除 - 当您dl_open(( 二进制文件时,它们可能会有用。如果要消除未使用的代码,请将 -ffunction-sections 和 -fdata-sections 添加到编译选项中,将 --gc-sections 添加到链接器选项中。编译选项将确保每个函数都放置在单独的部分中(而不是每个文件的一个部分(,链接器选项将丢弃未使用的部分。
相关文章:
- C++代码中奇怪的未使用的静态字符串声明
- 来自重载或模板化函数的额外未使用代码的影响?
- 在编译期间包含未使用的代码
- 用于 JUnit 测试的本机代码未使用 'nar-maven-plugin' 编译
- 如果 LTO 中的代码依赖于其构造的副作用,是否允许 LTO 删除未使用的全局对象?
- 我如何才能找到C 代码以找到所有未使用的返回值
- gcc 什么时候编译未使用的模板代码?
- C++Visual Studio Release生成未使用的代码崩溃
- 将未使用的元素添加到C/C 结构加快并减慢代码执行
- 进度条未使用C++代码和GTK+进行更新
- 编译器是否会排除未使用的模板代码
- qt-creator 中有没有办法检查未使用/死的代码
- 调试代码并C++未使用的参数警告
- 未使用调试器标志编译的代码出现分段错误
- CPP 使用代码块对 'Myclass::Myclass()' 的未定义引用
- 是否有任何工具/方法来检测/删除所有未使用的变量,宏,头(包括)和函数从c++代码
- 使用代码分析在Visual Studio 2010中查找未初始化的成员
- 未使用代码中的开销
- 如何使用Clang代码生成未使用的声明?
- 是为未使用的模板类方法生成的对象代码