GCC 编译的静态库包含啥?

Posted

技术标签:

【中文标题】GCC 编译的静态库包含啥?【英文标题】:What does a GCC compiled static library contain?GCC 编译的静态库包含什么? 【发布时间】:2008-10-31 18:56:38 【问题描述】:

我的应用程序链接到 libsamplerate.a。我这样做是为了更容易分发最终的二进制文件。

我担心 .a 文件中的代码可能依赖于我还需要分发的其他一些库。

但如果不是这样,我担心我会因为包含多个副本而使我的应用程序过于臃肿。库。

libsamplerate.a 中到底有什么?只是 libsamperate 的字节码?还是更多?

【问题讨论】:

【参考方案1】:

.a 文件基本上只是一堆 .o 文件。您可以使用ar 工具来演示这一点。

例如,显示库的内容:

ar -t libsamplerate.a

从头开始创建 .a 文件:

ar -r tim.a *.txt

【讨论】:

【参考方案2】:

静态库只是目标文件的集合。当您针对静态库编译程序时,程序使用的函数的目标代码将从库复制到可执行文件中。链接到静态库不会导致该库之外的任何函数包含在您的代码中。

【讨论】:

【参考方案3】:

只是 libsamplerate 的目标代码。静态链接单个库不会使所有库都静态链接。那会很糟糕。

【讨论】:

以上是关于GCC 编译的静态库包含啥?的主要内容,如果未能解决你的问题,请参考以下文章

gcc找不到静态库中的函数

gcc升级后静态库要升级吗

未定义弱函数的引用(静态库+ GCC)

linux自己写的静态库gcc报错

gcc 编译使用动态链接库和静态链接库

gcc编译工具生成动态库和静态库之一----介绍