mirror of
https://github.com/Aexiar/c.git
synced 2024-10-22 14:05:45 +02:00
2024年10月9日 08:53
This commit is contained in:
parent
1510acbc3f
commit
7607ecc283
@ -1399,13 +1399,13 @@ build
|
||||
|
||||
* 过程 ① :编写(编辑)源代码,即:编写 C 语言源程序代码,并以文件的形式存储在磁盘中。
|
||||
|
||||
> [!IMPORTANT]
|
||||
> [!NOTE]
|
||||
>
|
||||
> 源程序需要以 `.c` 作为扩展名。
|
||||
|
||||
* 过程 ② :编译,即:将 C 语言源程序转换为`目标程序(或目标文件)`。如果程序没有错误,没有任何提示,就会生成一个扩展名为 `.obj`或 `.o` 的二进制文件。C 语言中的每条可执行语句经过编译之后,最终都会转换为二进制的机器指令。
|
||||
|
||||
> [!IMPORTANT]
|
||||
> [!NOTE]
|
||||
>
|
||||
> * ① 其实,`编译阶段`包含了`预处理`、`编译`和`汇编`。
|
||||
>
|
||||
@ -1425,14 +1425,14 @@ build
|
||||
|
||||
* 过程 ③ :链接(连接),即:将编译形成的目标文件 `*.obj` 或 `*.o`和库函数以及其他目录文件`链接`,形成一个统一的二进制文件 `*.exe`。
|
||||
|
||||
>[!IMPORTANT]
|
||||
>[!NOTE]
|
||||
>
|
||||
>* 为什么需要链接库文件?
|
||||
>* 因为我们的 C 程序会使用 C 程序库中的内容,如:`<stdio.h>` 中的 `printf()` 函数,这些函数不是程序员自己写的,而是 C 程序库中提供的,因此需要链接。其实,在链接过程中,还会加入启动代码,这个启动代码(和系统相关,Linux 下主要有 crt0.c、crti.c 等,它们设置堆栈后,再调用 main() 函数)负责初始化程序运行时的环境。
|
||||
|
||||
* 过程 ④ :执行,即:有了可执行的 `*.exe`文件,我们就可以在控制台上执行运行此 `*.exe` 文件。
|
||||
|
||||
> [!IMPORTANT]
|
||||
> [!NOTE]
|
||||
>
|
||||
> 如果`修改`了源代码,还需要重新`编译`、`链接`,并生成新的 `*.exe`文件,再执行,方能生效。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user