什么是运行时库?我已阅读this,因此我对它的目的有一个正确的理解,但是它是一个文件吗?它是否可以像标准库一样明确包含?具体是什么运行时库?
回答
有静态和动态(运行时)库。
来自静态库的代码在编译时放入可执行文件中(链接器执行此操作)。所以这段代码可能会膨胀你的可执行文件,但它在每台计算机上都有相同的代码。
当您使用动态库(Windows中的.dll,Linux中的.so)时,该函数仅作为链接存储(从ABC.dll调用XYZ())。在执行二进制文件时,操作系统将这些库加载到可执行文件的地址空间中并解析链接。所以你的可执行文件比较小,这个库可以被许多程序使用。当这个库存在缺陷时,每个程序只能替换一次。但是,这只适用于如果库的接口只是小心改变,否则 - 欢迎来到DLL地狱。
首先,它是概念:在目标平台上提供语言功能所需的代码。
即它是执行strlen
和feclearexcept
和ofstream::operator<<
所有其他标准库函数的语言可用。
它也可能包含“胶水代码”,例如确保您的'main'在程序启动时被正确的参数调用,以及与目标OS的其他交互。
像许多概念,它有不同的“物理”表现(物理作为一个文件即可)。他们依赖于语言的实现细节,但常见的有:编译时可用
头文件,包含内嵌的实现(如标准模板Libary)
静态库(.OBJ或.LIB )文件,包含已编译的函数,并在链接期间包含在可执行文件中。
动态库文件(.dll或.so)需要在执行过程中可用的文件
“特殊的东西编译器或链接做”创建可执行
一个典型的C++时程序可能会看到“所有上述”。
静态库通常由C,C++或实现标准库函数,其通常使用目标OS的fucntionality(例如,Windows CreateFile
为fstreams)
的动态库程序包(的大型工件装配代码创建)这些静态库作为.dll或.so。
使用动态库需要相应的运行要在目标平台上安装,但使用起来也减少了你的可执行文件,并从更新到您的运行时已安装的应用效益的大小。
如上所述,这是实现依赖。可能有任何数量的附加文件(例如数据文件,配置文件,调试符号,图标等)与运行时相关联和包含在运行时中。
这里的另一个重要方面是:语言提供了目标平台的抽象,抽象层是在运行时实现的。
- 1. 什么是“Microsoft C++ Visual运行时库:运行时错误!”
- 2. 什么是VB运行时?
- 3. 什么是运行时间?
- 4. runAllManagedModulesForAllRequests =“false”的具体行为是什么?
- 5. 什么是具体实现?
- 6. 具体是什么线的
- 7. 什么是具体指数
- 8. 什么是Visual C运行库?
- 9. 为什么silverlight库在运行时v2.0.50727?
- 10. “运行时间”究竟是什么?
- 11. C++运行时是什么意思?
- 12. 什么是运行时错误?
- 13. 是什么。载的)运行时间(
- 14. 什么是运行时签名?
- 15. 是什么 - 做运行NPM命令时?
- 16. 什么是Java中的“运行时类”?
- 17. 什么是C++运行时概念?
- 18. 运行命令时,$是什么意思?
- 19. 什么是String.toCharArray()的运行时间?
- 20. 什么是Windows Phone运行时?
- 21. 什么是现代运行时?
- 22. 为什么NumberFormatException是运行时?
- 23. 运行Django时,'Reverse'是什么意思?
- 24. 解决运行时库冲突的好方法是什么?
- 25. '以管理员身份运行'具体做什么?
- 26. eval(parse(...))的危险具体是什么?
- 27. OpenCPU中的会话:具体是什么?
- 28. 什么,具体是“Facebook的ID”?
- 29. 这是为什么运行?
- 30. 什么是extract-min运行时间,为什么?
@ user0042感谢您的输入,但是它是如何显示实际运行时库的?就像您可以自己阅读的物理文件一样,包括等等...... – Rocket
正如我所说的,我已经阅读了有关该术语的内容。我只是喜欢他们的一些例子。 – Rocket
运行时库是代码(函数等)的集合,用户程序(例如,您编写的程序)需要它们才能正常工作。例如,在调用main()函数之前执行的C++标准库和代码通常是运行时库的一部分 - 大多数C++程序在没有它的情况下无法做任何有用的事情。运行时库可能是一个单独的可执行文件(例如,您的程序无法运行的Windows DLL窗口),或者链接器可能会在编译时直接将代码复制到可执行文件中,以便程序运行“独立”或这些组合。可能性继续 – Peter