【笔记】C语言的编译

前言

C语言的编译学习笔记

直接编译源码

  • 直接编译源码,转化为可执行文件

-o <file>:指定输出的文件路径

1
gcc <source>.c

编译多个源文件

  • 一次性编译多个C语言源文件
1
gcc <source_1>.c <source_2>.c

gcc编译过程

预编译

  • 预编译会把引入的头文件的源码直接引入
  • 预编译会去除注释

-o <file>:指定输出的文件路径
<source>:源码文件

1
gcc -E <source>.c

编译

  • 把源码转化为二进制指令

<source>:编译后的文件

1
gcc -c <source>.o

链接

  • 把编译后的文件与操作系统的库链接起来
  • 转化为可执行文件

<source>:可执行文件

1
gcc <source>

查看库

  • 查看一个编译后的文件使用了什么库
1
ldd <source>

关于预编译指令

  • 在源码中可以编写预编译的指令,实现选择性的编译
  • 通常在头文件中使用

<macro>:宏名字

如果定义

  • 如果定义了指定宏,那么编译以下语句
1
2
3
4
5
6
7
8
#define <macro>

int main()
{
#ifdef <macro>
...
#endif
}

如果没定义

  • 如果没有定义指定宏,那么不会编译以下语句
1
2
3
4
5
6
int main()
{
#ifndef <macro>
...
#endif
}

完成