编程机制_gcc hello.c -o hello 这个过程其实是分四步完成的

匈牙利认真的小菠萝 2022-10-26 15:36:02

gcc hello.c -o hello 这个过程其实是分四步完成的。

预处理(preprocessing):处理C程序中以'#'开头的行
(arm-linux-)gcc -E hello.c -o hello.i
==> hello.i这个文件还是C源代码文件

编译(compiling):把C源代码文件编译成汇编文件
(arm-linux-)gcc -S hello.i(hello.c) -o hello.s
==> hello.s这个文件是一个汇编指令文件

汇编(assembling):把一个汇编文件编译成一个目标文件(机器指令文件)
(arm-linux-)gcc -c hello.s -o hello.o
或 (arm-linux-)as hello.s -o hello.o

链接(linking):把各个目标文件.o或.so链接成一个可执行文件。
把各个.o文件的数据段,合到一起,解决地址冲突问题。
无操作系统的情况下,ld命令的用法比较复杂,arm裸编再详细讲解
(arm-linux-)ld -Ttext=30008000 hello.o a.o b.o -o hello
有操作系统的情况下,命令如下
(arm-linux-)gcc hello.o a.o b.o -o hello

...全文
42 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

115

社区成员

发帖
与我相关
我的任务
社区管理员
  • community_1031
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧