C语言编译、链接和运行详解

1. 什么是编译

  1. 有了 C 源文件,通过编译器将其编译成 obj 文件(目标文件)
  2. 如果程序没有错误,没有任何提示,但在 Debug 目录下会出现一个 Hello.obj 文件,该文件称为目标文件

2. 什么是链接

  1. 有了目标文件(.obj 文件),通过链接程序将其和运行需要的 c 库文件链接 成 exe 文件(可执行文件)。
  2. 如果程序没有错误,没有任何提示,但在 Debug 目录下会出现一个项目名.exe 文件,该文件称为可执行文件。
  3. 为什么需要链接库文件呢? 因为我们的 C 程序中会使用 C 程序库的内容,比如 <stdio.h> <stdlib.h> 中的函数printf() system()等等, 这些函数不是程序员自己写的,而是 C 程序库中提供的,因此需要链接
  4. 你会发现链接后,生成的.exe 文件,比 obj 文件了很多

3. 什么是运行

  1. 有了可执行的 exe 文件, 也称为可执行程序 (二进制文件)
  2. 在控制台下可以直接运行 exe 文件

4. C 程序开发注意事项1

  • 对修改后的 hello.c 源文件需要重新编译链接,生成新的 exe 文件后,再执行,才能生效。

5. 如果想只生成目标 exe 文件,不想执行结果

  • 如:hello.c 程序代码修改后只想生成 .exe 文件,不要执行结果
    在这里插入图片描述
  • 可以这样做:打开 VC++ 2010 ,调试–> 生成解决方案
    在这里插入图片描述
  • 这样就不会弹出执行.exe 文件
  • 而当打开 .exe 文件就是生成后的结果

6. 编译、链接和运行的流程

在这里插入图片描述

  • hello.c 的源文件只有 1KB

在这里插入图片描述

  • 编译后生成的 目标文件 只有 4KB
    在这里插入图片描述

  • 当链接生成 exe 文件变成了 27KB,说明在链接的过程中把一些库函数资源一起链接到 exe 文件中,所以 exe 文件变大了
    在这里插入图片描述

7. C 程序开发注意事项2

  1. C 程序的主体结构说明
	#include ... 
	void main() { // {} 包括内容, 称为函数体
	语句 1;
	语句 2;
	}
  1. C 程序源文件以“c”为扩展名。
  2. C 程序的执行入口是 main()函数
  3. C 语言严格区分大小写。
  4. C 程序由一条条语句构成,每个语句以“;”结束
  5. 大括号都是成对出现的,缺一不可
原文地址:https://www.cnblogs.com/xdr630/p/15254624.html