如果C ++编译为机器代码,为什么我们需要安装'运行时'?

时间:2018-02-24 13:53:57

标签: c++ compilation

在编译过程结束时,程序位于机器代码中的.exe文件中。因此,如果不必安装像MS Visual Studio C ++这样的东西,机器是否应该能够运行它?基本上,我正在制作一个mingw程序,并希望与其他人分享。我不明白为什么我不能只发送.exe文件。澄清将被赞赏。

2 个答案:

答案 0 :(得分:11)

C ++将您的代码编译为机器代码。如果您的程序是自包含的,那就是您所需要的。但是,更复杂的运行程序通常依赖于额外的编译代码,这些代码可通过库提供给您的程序。

一般来说,图书馆有两种口味" - 静态和动态。静态库被"烘焙到"你编译的代码。这并不理想,因为多个程序包含相同的代码,导致代码重复。另一方面,动态库在使用它们的所有程序之间共享,从而更有效地利用空间。

安装运行时添加了动态库,供所有使用C ++编译的程序使用。

答案 1 :(得分:5)

您的程序可能会调用您自己未编写的标准库中的许多函数。您需要运行时库。您的代码可能还需要在main之前运行代码来设置C ++程序所需的基本环境 - 运行时库为您执行此操作。在主要结束之后,需要根据标准进行各种清理(并且您的程序可能还取决于此),编译器运行时库会处理此问题。

您的代码不存在于真空中(可以,但它不再是标准的托管C ++程序)。它依赖于并依赖于标准的运行时库来提供C ++标准所说的环境。