首页 > 解决方案 > 为什么一些静态库被移动到 /lib 文件夹?

问题描述

我正在观看一些连接到 CMake 的教程视频,其中一个(链接)作者安装了一个静态库(.a)到用户/本地/lib。我想知道把它放在那里有什么好处。据我所知,编译后,静态库被打包到最终的可执行二进制文件中。据我说,只有共享库应该移动到 /lib 文件夹中。

或者,它是关于在静态库的情况下避免在构建过程中重新编译。任何帮助表示赞赏。

标签: cmakebuildstatic-librariesstatic-linking

解决方案


通常安装静态库的原因是能够使用它在目标系统上编译多个可执行二进制文件(即使在不同的包中,所以不一定来自同一个源代码树)。为此,还有一些静态库被打包,实际上有些包从同一个库中同时提供 .so 和 .a 文件(在我的 Debian 系统上,例如/usr/lib/x86_64-linux-gnu/{libpng16.a,libpng16.so}libpng-dev包中),因此它可以同时用于静态和动态链接的可执行文件(这也可能是许可问题)。如果在您的项目中您不想安装静态库,而只想在编译最终可执行文件期间使用它,您可以在 CMakeLists.txt 中进行配置。


推荐阅读