【问题标题】:Why are some static libraries moved to /lib folder?为什么一些静态库被移动到 /lib 文件夹?
【发布时间】:2020-09-02 10:41:32
【问题描述】:
我正在观看一些连接到 CMake 的教程视频,其中一个 (link) 作者安装了一个静态库 (.a) 到 user/local/lib。我想知道把它放在那里有什么好处。据我所知,编译后,静态库被打包到最终的可执行二进制文件中。据我说,只有共享库应该被移动到 /lib 文件夹中。
或者,它是关于在静态库的情况下避免在构建过程中重新编译。任何帮助表示赞赏。
【问题讨论】:
标签:
cmake
build
static-libraries
static-linking
【解决方案1】:
通常安装静态库的原因是能够使用它在目标系统上编译多个可执行二进制文件(即使在不同的包中,因此不一定来自同一个源代码树)。为此,还有一些静态库被打包,实际上一些包从同一个库中同时提供 .so 和 .a 文件(在我的 Debian 系统上,例如来自 libpng-dev 包的 /usr/lib/x86_64-linux-gnu/{libpng16.a,libpng16.so}),所以它既可以用于静态链接的可执行文件,也可以用于动态链接的可执行文件(这也可能是许可问题)。
如果在您的项目中您不想安装静态库,而只想在编译最终可执行文件期间使用它,您可以在 CMakeLists.txt 中进行配置。