<分区>
什么是运行时库?我读过this因此我对它的目的有一个体面的理解,但它是一个文件吗?它是否可以像标准库一样显式包含?
标签 c++
<分区>
什么是运行时库?我读过this因此我对它的目的有一个体面的理解,但它是一个文件吗?它是否可以像标准库一样显式包含?
最佳答案
首先是概念:在目标平台上提供语言功能所需的代码。
即它是 strlen
的实现和 feclearexcept
和 ofstream::operator<<
该语言提供的所有其他标准库函数。
它还可能包含“胶水代码”,例如确保在程序启动时使用正确的参数调用您的“main”,以及与目标操作系统的其他交互。
与许多概念一样,它具有不同的“物理”表现形式(与文件一样物理)。它们取决于语言的实现细节,但通常是:
编译期间可用的头文件,其中包含内联实现(例如标准模板库)
静态库(.obj 或 .lib)文件,包含已编译的函数,并在链接期间包含到您的可执行文件中。
需要在执行期间可用的动态库(.dll 或 .so)文件
创建可执行文件时“编译器或链接器执行的特殊操作”
典型的 C++ 程序可能会看到“以上所有内容”。
静态库通常由实现标准库函数的 C、C++ 或汇编代码创建,通常使用目标操作系统的功能(例如 Windows CreateFile
用于 fstreams)
动态库将这些静态库(大部分)打包为 .dll 或 .so。
使用动态库需要在目标平台上安装相应的运行时,但使用它们可以减少可执行文件的大小,并且您已经安装的应用程序可以从运行时更新中获益。 p>
如前所述,这依赖于实现。可能有任意数量的附加文件(例如数据文件、配置文件、调试符号、图标等)与运行时关联并包含在运行时中。
这里的另一个重要方面:语言提供了目标平台的抽象,抽象层在运行时实现。
关于c++ - 具体什么是运行时库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46707032/