我读过这.so
是一个动态库文件,.a
是一个静态库文件。
在构建时openssl
,我给出了选项./Configure no-shared
,它创建了很多.a
文件。
所以,我的问题是,像 apache 这样的其他软件包是否能够使用.a
openssl 中的文件?
例如libcrypto.a
,
如果我完全走错了路,请有人给我建议。
基本上静态库可以在链接时编译到另一个应用程序中。在您的示例中,Apache 可以libcrypto.a
在构建期间使用并将其包含在 Apachehttpd
应用程序中。
动态.so
库可以在运行时加载和卸载,您可以更灵活地更改 Apache 应支持的内容,而无需重新编译 Apache 二进制文件。
以 Apache 为例,文件的动态加载在.so
文档的动态共享对象 (DSO)部分中进行了描述。您还可以找到安装部分的链接,该部分描述了如何在构建时包含静态库。
有一个很好的问题可以很好地阅读,并提供主题中的细节。
如果 Aa 是静态库并且两个不同的程序想要使用它。Aa 为每个程序创建两次。而如果 A.so 是动态库,则两个程序访问同一个文件。这意味着您在图书馆中使用参考。
如果您的库要在多个可执行文件(如 apache 和 openssl)之间共享,则将其动态化以减小可执行文件的大小通常是有意义的。否则,一定要把它变成静态的。
在您的情况下,您必须创建动态库
请阅读 - http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html。
这是一个非常好的示例教程。