GCC预处理、编译、汇编、链接全过程

//hello.c
#include <stdio.h>
int
main (void)
{
printf ("Hello, world!\n");
return 0;
}

 

预处理:替代宏,引入头文件

cpp hello.c > hello.i

 

编译:

gcc -Wall -S hello.i

(生成hello.s)

 

汇编:

as hello.s -o hello.o

(生成hello.o)

 

链接:

复杂ld版:

ld -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o
/usr/lib/gcc/i486-linux-gnu/4.3/crtbegin.o -L/usr/lib/gcc/i486-linux-gnu/4.3
hello.o -lgcc -lgcc_eh -lc /usr/lib/gcc/i486-linux-gnu/4.3/crtend.o
/usr/lib/crtn.o

 

利用gcc完成:

gcc hello.o

(生成a.out)

 

查看文件的编译信息:

file a.out

 

查看符号表(包含函数,变量地址信息)

nm a.out

 

查看文件需要的动态链接库

ldd a.out

 

posted @   woodx  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示