传智播客-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)    收藏  举报

导航