8
A
回答
10
是的,你需要静态库来建立一个静态链接的可执行文件。
静态库是编译对象的包。当静态链接到库时,它与获取该库的编译结果,在当前项目中解压缩它们并将它们用作自己的对象相同。
动态库已经链接。这意味着像重定位这样的信息已经被修复并被抛出。
此外,动态库必须编译为位置无关的代码。这不是对静态库的限制,并且会在某些常见平台(如x86)上导致性能的显着差异。
存在诸如ELF Statifier这样的工具,它们试图将动态链接的库绑定到动态链接的可执行文件中,但在任何情况下都很难生成正确运行的结果。
6
没有静态编译,只有静态链接。为此,您需要静态库。静态链接和动态链接之间的区别在于,前者的名称在链接时(仅在编译时之后)解析,而后者则在程序开始运行时解析。
静态和动态库可能包含或不包含相同的信息,具体取决于许多因素。关于是否静态或动态链接您的代码的决定非常重要,并且通常会影响应用程序体系结构。
+0
谢谢,纠正'编译'为'链接'。 – 2009-06-20 18:06:27
2
链接到静态链接程序的所有库必须是静态变体。虽然动态(libfoo.so)和静态(libfoo.a)库在它们中具有相同的功能,但它们是不同的格式文件,因此您需要程序的匹配类型。
1
另一个选择是貂王(http://magicErmine.com) 这就像statifier,但能够处理记忆随机化。
相关问题
- 1. UNIX:静态库链接到静态库
- 2. 在linux上构建静态C++库 - 我需要链接到其他库吗?
- 3. 数学库是静态链接的吗?
- 4. 静态库链接失败
- 5. 链接到静态库
- 6. 静态库链接两次
- 7. 链接第三方静态库到另一个静态库
- 8. 将静态库链接到另一个静态库
- 9. 链接静态库,共享另一个静态库
- 10. 静态链接到动态库。 glibc
- 11. 链接动态和静态库RCPP
- 12. 静态和动态库链接
- 13. 什么是静态库,静态链接动态库和动态链接动态库的.lib文件?
- 14. 如何静态链接到另一个项目,该项目本身需要链接到其他静态库?
- 15. 需要帮助链接AOSP中的第三方静态库
- 16. 静态链接OpenCV
- 17. gcc静态链接
- 18. 链接静态stdlib.so
- 19. pthread静态链接
- 20. 我们需要一个静态IP来使用HTML5 Websockets吗?
- 21. 静态库在wxWidgets中静态链接,但使用我的lib的应用程序仍然需要wxwidgets
- 22. 忘记后期静态绑定,我需要后期静态__FILE__
- 23. 链接到链接到静态.lib的静态.lib的问题
- 24. g ++链接器:如果静态库存在,强制静态链接?
- 25. ConfigurationPropertyCollection需要是静态的吗?
- 26. 当一个静态库依赖于另一个静态库时,是否需要指定链接依赖关系?
- 27. 静态链接库是否需要链接它们的依赖关系?
- 28. 静态库链接错误“需要不受支持的动态reloc”
- 29. DLL比静态链接慢吗?
- 30. 静态库不需要头文件?
感谢您的一个很好的答案。但为什么这么难? – 2009-06-20 18:10:13
ELF Statfier加载可执行文件及其所有库,然后获取进程内存的快照。当输出图像运行时,会导致内存布局改变的任何事情(例如随机化的VDSO)将导致错误的操作。任何其他方法都需要重新创建动态链接器。 – ephemient 2009-06-20 19:00:06