C++ 介绍编译器 连接器和库
继续我们从上一课 0.4 C++ 开发简介中对该图的讨论:
我们来讨论步骤 4-7。
第4步:编译源代码
为了编译 C++ 程序,我们使用 C++ 编译器。C++ 编译器按顺序遍历程序中的每个源代码(.cpp)文件,并执行两项重要任务:
首先,它检查您的代码以确保它遵循C++语言的规则。如果没有,编译器会给你一个错误(和相应的行号),以帮助确定需要修复的内容。编译过程也将中止,直到错误得到修复。
其次,它将您的C++源代码转换为称为目标文件的机器语言文件。目标文件通常名为name.o或name.obj,其中name与生成它的.cpp文件的名称相同。
如果您的程序有3个.cpp文件,编译器将生成3个目标文件:
C++编译器可用于许多不同的操作系统。我们将讨论很快安装编译器,因此现在不需要这样做。
第5步:链接目标文件和库
在编译器创建一个或多个目标文件之后,另一个称为链接器的程序 启动。链接器的工作有三个:
首先,获取编译器生成的所有目标文件,并将它们组合成一个可执行程序。
其次,除了能够链接目标文件之外,链接器还能够链接库文件。一个库文件是预编译代码的集合,它已经“打包”在其他程序中重用。
C++核心语言实际上相当小而简洁(您将在这些教程中学到很多东西)。但是,C++还附带了一个名为C++标准库(通常缩写为标准库)的扩展库,它提供了可在程序中使用的其他功能。C++标准库中最常用的部分之一是iostream库,包含在显示器上打印文本和从用户获取键盘输入的功能。几乎所有编写的C++程序都以某种形式使用标准库,因此将标准库链接到程序中非常常见。一旦你使用它的任何部分,大多数链接器将自动链接到标准库中,所以这通常不是你需要担心的事情。
您也可以选择在其他库中链接。例如,如果您要编写一个播放声音的程序,您可能不希望编写自己的代码来读取磁盘中的声音文件,检查以确保它们有效,或者弄清楚如何路由声音数据通过扬声器播放操作系统或硬件 - 这将是很多工作!相反,你可能会下载一个已经知道如何做这些事情的库,并使用它。我们将在附录中讨论如何在库中链接(并创建自己的!)。
第三,链接器确保正确解析所有跨文件依赖关系。例如,如果您在一个.cpp文件中定义某个内容,然后在另一个.cpp文件中使用它,则链接器会将两者连接在一起。如果链接器无法使用该事物的定义连接对事物的引用,则会出现链接器错误,并且链接过程将中止。
一旦链接器完成链接所有目标文件和库(假设一切顺利),您将拥有一个可执行文件,然后您可以运行!
对于高级读者
对于复杂项目,某些开发环境使用makefile,该文件描述了如何构建程序(例如,要编译和链接的文件,或以其他方式处理)。已经写了关于如何编写和维护makefile的全书,它们可以成为一个非常强大的工具。但是,因为makefile不是C++核心语言的一部分,也不需要使用它们来继续,所以我们不会将它们作为本教程系列的一部分进行讨论。
步骤6和7:测试和调试
这是有趣的部分(希望如此)!您可以运行可执行文件,看看它是否产生您期望的输出!
如果您的程序运行但无法正常工作,那么现在是时候进行一些调试以找出问题所在。我们将讨论如何测试您的程序以及如何更快地调试它们。
集成开发环境(IDE)
请注意,步骤3,4,5和7都涉及软件(编辑器,编译器,链接器,调试器)。虽然您可以为每个功能使用单独的程序,但称为集成开发环境(IDE)的软件包将所有这些功能捆绑在一起并集成在一起。我们将在下一节讨论IDE,并安装一个IDE。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: C++ 注释介绍和使用
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论