如何在GCC中优化后丢弃未使用的功能

时间:2018-01-23 06:42:17

标签: c gcc

我遇到GCC优化问题,

当我使用gcc test.c -Osgcc test.c -O2时, main()函数将放在起始地址。

但有一些未使用的功能,例如<_start> <exit> <memset>,为什么它们仍在那里?

我尝试使用-ffunction-sections -fdata-sections-gc-sections,但它无法正常使用。

我的简单代码:

#include <stdio.h>
int main(){
char buff[20];
sprintf(buff, "%s%d", "hello", 6);
return 0; }

1 个答案:

答案 0 :(得分:2)

_start通常是您的可执行文件的真正入口点(在调用main之前初始化C运行时的那个); exit终止时隐式调用main。编译器在各种情况下隐式调用memset(例如,当堆栈上的零初始化缓冲区时),或printf实现可能使用x::y