我正在学习C ++编程语言,我对编译器如何创建可执行文件有疑问。我的书说:
C ++是一种编译语言,因此您需要将源代码翻译成计算机可以执行的文件。这个文件是由编译器生成的,它被称为目标代码(.obj),但像hello world程序这样的程序由我们编写的部分和C ++库的一部分组成。
这是hello world计划中的哪一部分?
然后我的书说:
您必须编译并链接程序的两个部分以生成可执行文件。
这是否意味着可执行文件是链接程序的两个部分并且无法执行目标代码的结果?
答案 0 :(得分:1)
这两部分是1)"你的代码调用print函数并将字符串传递给",这是你编译的hello world程序; 2)实现打印功能的代码(例如" std :: cout<<")。我们称之为标准库。
显然,如果没有标准的库对象文件,由于缺少std :: cout的实现,你无法获得完整的可执行文件。
标准库的原因之一是使用户代码(您的hello world文件)在不同的操作系统中更具可移植性,因为在Unix系统中,您实际上必须使用&# 34;写"函数打印字符串;但在其他系统中,您可以使用"写"以外的功能。标准库为您统一。
有关标准库对象文件的详细信息包括模板实例化等技术,您现在可能对此不感兴趣。
答案 1 :(得分:0)
没错:C和C ++都有单独的编译和链接步骤。源被编译为该特定处理器的目标代码。目标文件和库链接在一起然后执行。
Java和C#都使用由各自的虚拟机解释和执行的字节代码。
答案 2 :(得分:0)
必须编译C和C ++。您将使用将您的代码转换为特定于平台的可执行文件的编译器。
编译器执行了许多步骤:
在皮带上,这就是我在学校学到的东西......