当前位置: 技术问答>linux和unix
为什么头文件越多,生成的可执行文件越大?
来源: 互联网 发布时间:2016-07-27
本文导语: 比如两个程序 第一个: test1.c #include int main(char argc,char **argv) { int aa; aa=10; } 第二个: test2.c int main(char argc,char **argv) { int aa; aa=10; } 为什么这两个程序生成的可执行文件大小不一样...
比如两个程序
第一个: test1.c
#include
int main(char argc,char **argv)
{
int aa;
aa=10;
}
第二个: test2.c
int main(char argc,char **argv)
{
int aa;
aa=10;
}
为什么这两个程序生成的可执行文件大小不一样? 第一个生成的可执行文件大小大约为第二个的1.5倍。
高手解释下,如果有相关资料更好,谢谢!
第一个: test1.c
#include
int main(char argc,char **argv)
{
int aa;
aa=10;
}
第二个: test2.c
int main(char argc,char **argv)
{
int aa;
aa=10;
}
为什么这两个程序生成的可执行文件大小不一样? 第一个生成的可执行文件大小大约为第二个的1.5倍。
高手解释下,如果有相关资料更好,谢谢!
|
因为include的时候,只是把.h里的东西拷贝过来而已。
|
第一个程序把stdio.h的内容加进去了
|
#include 是预处理命令 在程序编译前会把整个头文件都加到你的源程序里再一起编译。
|
#include 里有一些全局已初始化变量,供一些库函数使用,虽然那些库函数根本没有被调用
可以readelf 来看看到底是那些地方多了
可以readelf 来看看到底是那些地方多了
|
真想搞明白 建议你看本书
Linkers & Loaders
Linkers & Loaders
|
ls们都说光答案了
|
你程序里加了东西当然变大了,汗。。。。