[英]How to discard unused function after optimization in GCC
我在进行GCC优化时遇到了问题,
当我使用gcc test.c -Os
或gcc 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; }
_start
通常是可执行文件的真实入口点(在调用main
之前初始化C运行时的入口点); 当main
终止时,将隐式调用exit
。 memset
在各种情况下(例如,当堆栈上的缓冲区初始化为零时)由编译器隐式调用,或者可以由printf
实现使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.