2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介

2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介
2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介

继续我们在上一课( C++ 开发简介)中对该图的讨论:

让我们讨论步骤 4。

2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介
2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介

C++教程百度云:第 4 步:编译源代码

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

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

其次,它将您的 C++ 源代码翻译成称为目标文件的机器语言文件。对象文件通常命名为name.o或name.obj,其中name与生成它的 .cpp 文件的名称相同。

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

编译过程

2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介
2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介


C++ 编译器可用于许多不同的操作系统。我们将很快讨论安装编译器,所以现在不需要这样做。

C++教程百度云:第 5 步:链接目标文件和库

在编译器创建一个或多个目标文件之后,另一个名为链接器的程序就会启动。链接器的工作包括三个方面:

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

2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介
2022年6月15日C++教程百度云第三章C++编译器、链接器和库简介

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

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

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

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

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

对于高级读者

对于复杂的项目,一些开发环境使用makefile,这是一个描述如何构建程序的文件(例如,要编译和链接哪些文件,或以其他方式处理)。整本书都是关于如何编写和维护 makefile 的,它们可以成为一个非常强大的工具。但是,由于 makefile 不是 C++ 核心语言的一部分,您也不需要使用它们来继续,因此我们不会在本教程系列中讨论它们

C++教程百度云:第 6 步和第 7 步:测试和调试

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

如果您的程序运行但不能正常工作,那么是时候进行一些调试以找出问题所在了。我们将很快讨论如何测试您的程序以及如何更详细地调试它们。

集成开发环境 (IDE)

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

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:http://www.qince.net/cplusplus-bianyi.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2022年6月15日 上午10:35
下一篇 2022年6月15日 上午11:52

猜你喜欢

发表回复

登录后才能评论