C++编译器、链接器和库简介

C++ 编译器、链接器和库是 C++ 程序开发中的关键组成部分。它们协同工作以将源代码转化为可执行程序,并提供了许多功能和标准库,以便开发者能够更轻松地创建 C++ 应用程序。继续上一节对该图的讨论。

C++编译器、链接器和库简介

第 4 步:编译源代码

为了编译 C++ 程序,我们使用 C++ 编译器。C++ 编译器按顺序遍历程序中的每个源代码 (.cpp) 文件并执行两项重要任务:

首先,它检查您的代码以确保它遵循 C++ 语言的规则。如果没有,编译器会给您一个错误(以及相应的行号)以帮助确定需要修复的内容。编译过程也将中止,直到错误得到修复。

其次,它将 C++ 源代码转换为称为目标文件的机器语言文件。对象文件通常命名为name.oname.obj,其中name与它是由 .cpp 文件生成的。

如果您的程序有 3 个 .cpp 文件,编译器将生成 3 个目标文件:

C++编译器、链接器和库简介

C++ 编译器可用于许多不同的操作系统。后面会讨论安装编译器。

第 5 步:链接目标文件和库

编译器创建一个或多个目标文件后,另一个称为链接器的程序就会启动。链接器的工作分为三部分:

首先,获取编译器生成的所有目标文件并将它们组合成一个可执行程序。

C++编译器、链接器和库简介

其次,除了能够链接目标文件之外,链接器还能够链接库文件。库文件是已“打包”以便在其他程序中重用的预编译代码的集合。

C++ 核心语言实际上相当小且简洁(您将在这些教程中学到很多内容)。但是,C++ 还附带了一个名为C++ 标准库(通常简称为标准库)的扩展库,它提供了可以在程序中使用的附加功能。C++ 标准库中最常用的部分之一是iostream 库,其中包含在监视器上打印文本和获取用户键盘输入的功能。几乎每个编写的 C++ 程序都以某种形式使用标准库,因此标准库链接到您的程序中是很常见的。一旦您使用标准库的任何部分,大多数链接器都会自动链接到标准库中,因此这通常不是您需要担心的事情。

您还可以选择链接其他库。例如,如果您要编写一个播放声音的程序,您可能不想编写自己的代码来从磁盘读取声音文件、检查以确保它们有效或弄清楚如何路由声音数据到操作系统或硬件来通过扬声器播放——这将是一项繁重的工作!相反,您可能会下载一个已经知道如何执行这些操作的库并使用它。我们将在附录中讨论如何链接库(并创建您自己的库!)。

第三,链接器确保所有跨文件依赖关系都得到正确解决。例如,如果您在一个 .cpp 文件中定义某些内容,然后在另一个 .cpp 文件中使用它,则链接器会将两者连接在一起。如果链接器无法将引用与其定义连接起来,您将收到链接器错误,并且链接过程将中止。

一旦链接器完成链接所有目标文件和库(假设一切顺利),您将拥有一个可以运行的可执行文件!

步骤 6 和 7:测试和调试

这是有趣的部分(希望如此)!您可以运行可执行文件并查看它是否产生您期望的输出!

如果您的程序可以运行但无法正常工作,那么就需要进行一些调试来找出问题所在。我们将很快讨论如何测试您的程序以及如何调试它们。

集成开发环境 (IDE)

请注意,步骤 3、4、5 和 7 都涉及软件(编辑器、编译器、链接器、调试器)。虽然您可以对每项活动使用单独的程序,但称为集成开发环境 (IDE) 的软件包将所有这些功能捆绑并集成在一起。我们将在下一节中讨论 IDE 并安装它。