将 C 目标文件归档到静态库(.a 文件)中的优点是什么?

将 C 目标文件归档到静态库(.a 文件)中的优点是什么?

我的意思是,与仅链接到单个模块/目标文件相反。为什么模块组要归档在一起?它不会使可执行文件 1. 更大,并且 2. 更不安全(即更容易受到面向返回的编程攻击)吗?

答案1

静态库的主要功能是符号索引,它允许您仅链接那些提供缺失符号的存档成员。

将目标文件分组为单个文件或压缩都是次要的,您可以拥有所谓的“精简档案”,但两者都不会。 (精简档案基本上只是存在于它们引用的目标文件之外的引用文件)。

答案2

优点:您只有一个文件。

静态库只是一个档案。您可以根据需要放入和取出单个文件。当您链接程序时,只会提取并链接适当的文件。

注意:如果您使用带有 的 Linux 发行版dpkg,则您将使用相同的库和包归档工具(并且可能嵌套在 -dev 包中)。

相关内容