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. C静态链接库吗?
- 2. 链接静态库与静态库
- 3. UNIX:静态库链接到静态库
- 4. 静态链接库
- 5. Visual Studio:静态链接到静态库
- 6. XCode静态库是否需要与动态库链接?
- 7. 链接到静态库来构建静态可执行
- 8. 将动态库链接到链接到其他静态库的静态库
- 9. 在linux上构建静态C++库 - 我需要链接到其他库吗?
- 10. 数学库是静态链接的吗?
- 11. 静态库链接两次
- 12. 链接静态库为R
- 13. 静态链接DCMTK库
- 14. Qt:库的静态链接
- 15. 级联静态库链接?
- 16. 链接到静态库
- 17. 对链接的静态库
- 18. 静态库链接失败
- 19. 在另一个静态库中链接静态库
- 20. 链接静态库,共享另一个静态库
- 21. 链接第三方静态库到另一个静态库
- 22. 将静态库链接到另一个静态库
- 23. 链接静态库与其他静态库
- 24. 静态和动态库链接
- 25. 静态和动态链接库
- 26. 链接动态和静态库RCPP
- 27. 静态链接到动态库。 glibc
- 28. 什么是静态库,静态链接动态库和动态链接动态库的.lib文件?
- 29. 如何静态链接到另一个项目,该项目本身需要链接到其他静态库?
- 30. 需要帮助链接AOSP中的第三方静态库
感谢您的一个很好的答案。但为什么这么难? – 2009-06-20 18:10:13
ELF Statfier加载可执行文件及其所有库,然后获取进程内存的快照。当输出图像运行时,会导致内存布局改变的任何事情(例如随机化的VDSO)将导致错误的操作。任何其他方法都需要重新创建动态链接器。 – ephemient 2009-06-20 19:00:06