在Linux上的“ C”上,
我需要静态库来静态链接,还是需要足够的共享库?如果没有,为什么不呢?(它们不包含相同的数据吗?)
是的,您需要静态库来构建静态链接的可执行文件。
静态库是编译对象的捆绑包。静态链接到库时,实际上与获取该库的编译结果,将它们解压缩到当前项目中以及将它们当作自己的对象使用一样。
动态库已链接。这意味着一些信息,例如重定位,已经被修复并丢弃。
此外,动态库必须编译为与位置无关的代码。这不是对静态库的限制,并且会导致某些常见平台(例如x86)在性能上的显着差异。
存在诸如ELF Statifier之类的工具,这些工具试图将动态链接的库捆绑到一个动态链接的可执行文件中,但是很难在所有情况下都生成正确的工作结果。