1.C++程序是如何运行起来的呢?

C++程序是如何运行起来的呢?

步骤如下:

这个问题的具体步骤取决于计算机环境和使用的C++编译器,但大体如下

1.C++程序是如何运行起来的呢?_第1张图片

  1. 使用文本编辑器编写程序,并将其保存在文件中,这个文件就是程序的源代码。

  2. 编译源代码。这意味着运行一个程序,将源代码翻译为主机使用的内部语言一一机器语言。包含了翻译后的程序的文件就是程序的目标代码(object code)。

  3. 将目标代码与其他代码链接起来。例如,C++程序通常使用库。C++库包含一系列计算机例程(被称为函数)的目标代码,这些函数可以执行诸如在屏幕上显示信息或计算平方根等任务。链接指的是将目标代码同使用的函数的目标代码以及一些标准的启动代码(startup code) 组合起来,生成程序的运行阶段版本。包含该最终产品的文件被称为可执行代码。

如何编译和链接呢?

1.windows编译和链接

在windows中相信大家刚开始学习的时候应该用的都是DevC++吧,下面我们用DevC++来演示:

我们先新建一个spiffy.cpp文件

然后点击编译之后

1.C++程序是如何运行起来的呢?_第2张图片

直接生成了一个spiddy.exe可执行文件,他直接把编译生成的目标代码和链接给一起运行好了,并且删除了目标文件,这个对初学者来说很方便,但会隐藏这个文件的编译过程,不适合更见深入的学习,更推荐使用vscode

2.Linux编译和链接

在Linux 系统中最常用的编译器是 g++,下面我们将用这个编译器进行演示

1.C++程序是如何运行起来的呢?_第3张图片

刚开始我们只有一个test.cpp源文件文件,运行如下代码

 g++ -E test.cpp -o test.i

1.C++程序是如何运行起来的呢?_第4张图片

获得一个test.i文件(自己可以打开看看),这个文件时头文件和宏展开之后的文件。

 g++ -S test.cpp 

1.C++程序是如何运行起来的呢?_第5张图片

运行上面的代码之后我们得到了test.s文件,这个是汇编代码

 g++ -c test.cpp

1.C++程序是如何运行起来的呢?_第6张图片

多了一个test.o文件,这个已经是我们所说的目标代码,二进制文件。

最后我们进行链接把目标代码和启动代码和库代码进行链接,我们就得到了可执行代码。

但是在我们实际使用中直接使用下面代码

 g++ test.cpp

1.C++程序是如何运行起来的呢?_第7张图片

可以直接得到我们的可执行文件a.out

3.UNIX编译和链接

例如,要编译 C++源代码文件 spiffy.C,则应在 UNIX 提示符下输入如下命令:

 CC spiffy.C

这时编译器将生成文件 spiffy.o。 接下来,编译器自动将目标代码文件传递给系统链接程序,该程序将代码与库代码结合起来,生成一个可执行文件。在默认情况下,可执行文件为 a.out。如果只使用一个源文件,链接程序还将删除 spifiy.o文件,因为这个文件不再需要了。要运行该程序,只要输入可执行文件的文件名即可:

 a.out

你可能感兴趣的:(c++,c++)