我的应用程序链接到 libsamplerate.a。我这样做是为了更容易分发最终的二进制文件。
我担心 .a 文件中的代码可能取决于我还需要分发的其他一些库。
但如果不是这样,我担心我会因为包含多个副本而使我的应用程序过于臃肿。库。
libsamplerate.a 中到底有什么?只是 libsamperate 的字节码?或者更多?
我的应用程序链接到 libsamplerate.a。我这样做是为了更容易分发最终的二进制文件。
我担心 .a 文件中的代码可能取决于我还需要分发的其他一些库。
但如果不是这样,我担心我会因为包含多个副本而使我的应用程序过于臃肿。库。
libsamplerate.a 中到底有什么?只是 libsamperate 的字节码?或者更多?
.a 文件基本上只是一堆 .o 文件。您可以使用该ar
工具进行演示。
例如,要显示库的内容:
ar -t libsamplerate.a
要从头开始创建 .a 文件:
ar -r tim.a *.txt
静态库只是目标文件的集合。当您针对静态库编译程序时,程序使用的函数的目标代码将从库复制到可执行文件中。链接到静态库不会导致该库之外的任何函数包含在您的代码中。
只是 libsamplerate 的目标代码。静态链接单个库不会使所有库都静态链接。那会很糟糕。