传智播客-C语言-第二版本-基础班-0821-C语言编译过程
C语言编译过程
C源程序(预编译)->生成预编译后的源文件(汇编)->汇编文件.s(编译成二进制指令)->编译生成o文件->最终生成可执行程序<-第三方库,包括C库(链接)
gcc 编译选项
-o 代表指定输出文件名
-E 代表预编译
-S 代表汇编
-c 代表编译
预编译处理include的本质就是简单的将include中的文件替换到 c 文件中
如果 include 包含的头文件在系统目录下,那么就用 #include <>,如果包含的文件在当前目录下,那么用 #include ""
CPU内部有个单元叫寄存器
EAX、EBX、ECX、EDX 四个通用寄存器
Windows 下有一个工具可转换汇编
objdump -S 文件.exe
实例
1.创建文件hello.c
#include "a.h"
int main()
{
return 0;
}
2.创建文件a.h
void test()
{
return;
}
3.预编译
gcc -o hello.i -E hello.c
4.汇编
gcc -o hello.s -S hello.i
5.编译
gcc -o hello.o -c hello.s
6.生成可执行文件(扩展名在linux下没有意义)
gcc -o hello hello.o
7.查看文件使用了什么库
ldd hello
posted on 2019-10-14 17:42 herisson_pan 阅读(9) 评论(0) 收藏 举报
浙公网安备 33010602011771号