静态库默认情况下存在/usr/lib
或 /usr/lib64
但我使用以下命令在我的操作系统中删除了所有它们:
find / -name *.a -exec rm -rf {} \;
我的 linux 已经好了,一切正常!
我们可以说吗?
" Package.rpm 或 *.deb 包含编译器输出,只有它们需要共享库。
而当我们从源代码安装软件时,如果在结构中使用静态库,在编译时链接器,将静态库复制到它的可执行文件中。
我的系统中没有*.a
文件,也许将来如果我从源代码安装软件,我将面临问题”
请用简单的方式向我解释
静态库是二进制文件在编译时使用的库。它们通常不会在运行时再次使用,因为它们在编译时与已编译的二进制文件链接并成为二进制文件本身的一部分。
此外,在实现中,这些不在二进制文件之间共享,只有使用特定静态库编译的二进制文件才使用它(那些)。所以在应用程序中,这些与静态链接库完全相反。
请注意,静态库以 . 结尾,
.a
而动态库以.so
.静态库是编译源代码的二进制独立包,您在以静态方式构建应用程序时将其“导入”到应用程序中。
真的,一个叫做链接器的程序,对他们的编译代码和你编译的源代码进行一种“复制和粘贴”(它有点复杂,但这个解释可以很好地响应你的请求......) .
然后,您在 OP 中报告的消息综合表明,从目录“lib”中删除静态库不会对已安装的程序产生问题,因为如前所述,它们已经“粘贴”在已安装的程序,这可能发生在 Linux 中,因为它的程序通常由其未编译的源代码直接分发,因此它们需要一个编译步骤,通常通过 rpm 或其他 linux 包/设置管理器完成。
相反,正如发布的消息所说,如果您安装新程序,那么安装可能会失败,如果它们需要删除的库,因为在编译时,链接器不会找到需要的(引用的)静态库。
我希望很清楚,对不起我的英语不好..