C语言编译和链接

我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序,在 Windows 下,可执行程序的后缀有.exe和.com(其中.exe比较常见)

编译

C语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于CPU,C语言代码就是天书,根本不认识,CPU只认识几百个二进制形式的指令。这就需要一个工具,将C语言代码转换成CPU能够识别的二进制指令,也就是将代码加工成 .exe 程序的格式;这个工具是一个特殊的软件,叫做编译器

编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译

链接

C语言代码经过编译以后,并没有生成最终的可执行文件(.exe 文件),而是生成了一种叫做目标文件(Object File)的中间文件(或者说临时文件)。目标文件也是二进制形式的,它和可执行文件的格式是一样的。对于 Visual C++,目标文件的后缀是.obj;对于 GCC(linux系统上面的),目标文件的后缀是.o

目标文件经过链接以后才能变成可执行文件

编译:
只是将我们自己写的代码变成了二进制形式,它还需要和系统组件(比如标准库、动态链接库等)结合起来,这些组件都是程序运行所必须的。
链接:
其实就是一个“打包”的过程,它将所有二进制形式的目标文件和系统组件组合成一个可执行文件。完成链接的过程也需要一个特殊的软件,叫做链接器

随着学习的深入,我们编写的代码越来越多,最终需要将它们分散到多个源文件中,编译器每次只能编译一个源文件,生成一个目标文件,这个时候,链接器除了将目标文件和系统组件组合起来,还需要将编译器生成的多个目标文件组合起来。

实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件

eg.
编辑器:用来编写代码,并且给代码着色,以方便阅读;
代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程;
调试器:观察程序的每一个运行步骤,发现程序的逻辑错误;
项目管理工具:对程序涉及到的所有资源进行管理,包括源文件、图片、视频、第三方库等;
漂亮的界面:各种按钮、面板、菜单、窗口等控件整齐排布,操作更方便(c语言中涉及比较少)
这些工具通常被打包在一起,统一发布和安装
它们统称为集成开发环境(IDE,Integrated Development Environment)。
在实际开发中,我一般也是使用集成开发环境,而不是单独地使用编译器。
(vs code 就是一个编译器)

Windows 下 IDE推荐

  1. Visual Studio Windows 下首先推荐大家使用微软开发的 Visual Studio 2022

    这个是博主自己用的安装包这儿呢Visual Studio 2022

    提取码:2111

  2. Dev C++如果你讨厌 VS 的复杂性,那么可以使用 Dev C++。Dev C++ 是一款免费开源的 C/C++ IDE,内嵌 GCC 编译器(Linux GCC 编译器的 Windows 移植版),是 NOI、NOIP 等比赛的指定工具。Dev C++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。

    Dev C++ 提取码:2111

  3. Visual C++ 6.0(简称VC 6.0)是微软开发的一款经典的 IDE,很多高校都以 VC 6.0 为教学工具来讲解C和C++。

    Visual C++ 6.0提取码:2111

    不会安装的可以自行百度

程序安装解释

不同的操作系统,安装软件的方法虽然不一样,但基本原理是相同的,主要的思想就是将程序的二进制可执行文件拷贝到某个目录,设置一些路径。如果程序运行时需要一些库,将这些库拷贝到系统目录即可。

程序的安装基本上要经过下面四个步骤:

  1. 将程序的可执行文件从安装包所在的位置,拷贝到要安装的目录。安装程序的时候,程序会给用户指定一个默认的安装目录,如果用户需要,也可以自定义安装,改变安装目录。一般所谓的“绿色软件”到此就安装结束了,可以使用了。

  2. 如果有必要,可以向系统目录拷贝一些动态链接库(DLL)。(可选操作)有的程序,比如大型游戏,可能需要很多动态链接库(DLL)的支持,这时候程序可能会将这些 DLL 拷贝到系统库的默认目录,Win7 下一般拷贝到C:\Windows\System32\(读者不妨打开该目录,会看到很多 DLL 文件)。有些程序用到的 DLL 文件不是系统必需的,只能由程序自己使用,这样放在系统目录里就不太合适,安装的软件多了,就会造成系统臃肿,所以这些 DLL 会被拷贝到程序的安装目录。

  3. 向系统注册表中写入相应的设置项,注册程序或者库的安装信息。(可选操作)安装前,用户可能会对软件做一些设置,安装时,这些设置就会被写入注册表。另外,当安装程序将 DLL 文件拷贝到系统目录时,一些 DLL 还需要向系统注册,告诉系统我在这里,不然使用的时候可能会找不到。

  4. 在开始菜单或者桌面上位程序创建快捷方式。(可选操作)创建快捷方式主要是为了用户使用方便,有了快捷方式,就不用再到安装目录去启动程序了。