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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」