一尘不染

我需要静态库来静态链接吗?

linux

在Linux上的“ C”上,

我需要静态库来静态链接,还是需要足够的共享库?如果没有,为什么不呢?(它们不包含相同的数据吗?)


阅读 226

收藏
2020-06-07

共1个答案

一尘不染

是的,您需要静态库来构建静态链接的可执行文件。

静态库是编译对象的捆绑包。静态链接到库时,实际上与获取该库的编译结果,将它们解压缩到当前项目中以及将它们当作自己的对象使用一样。

动态库已链接。这意味着一些信息,例如重定位,已经被修复并丢弃。

此外,动态库必须编译为与位置无关的代码。这不是对静态库的限制,并且会导致某些常见平台(例如x86)在性能上的显着差异。

存在诸如ELF
Statifier之
类的工具,这些工具试图将动态链接的库捆绑到一个动态链接的可执行文件中,但是很难在所有情况下都生成正确的工作结果。

2020-06-07