cmake - 为什么一些静态库被移动到 /lib 文件夹?
问题描述
我正在观看一些连接到 CMake 的教程视频,其中一个(链接)作者安装了一个静态库(.a)到用户/本地/lib。我想知道把它放在那里有什么好处。据我所知,编译后,静态库被打包到最终的可执行二进制文件中。据我说,只有共享库应该移动到 /lib 文件夹中。
或者,它是关于在静态库的情况下避免在构建过程中重新编译。任何帮助表示赞赏。
解决方案
通常安装静态库的原因是能够使用它在目标系统上编译多个可执行二进制文件(即使在不同的包中,所以不一定来自同一个源代码树)。为此,还有一些静态库被打包,实际上有些包从同一个库中同时提供 .so 和 .a 文件(在我的 Debian 系统上,例如/usr/lib/x86_64-linux-gnu/{libpng16.a,libpng16.so}
从libpng-dev
包中),因此它可以同时用于静态和动态链接的可执行文件(这也可能是许可问题)。如果在您的项目中您不想安装静态库,而只想在编译最终可执行文件期间使用它,您可以在 CMakeLists.txt 中进行配置。
推荐阅读
- android - 如何在Android中命名协程?
- python - 将数据从网络抓取到 Excel 的问题
- sql - SQL查询过滤多次购买相同产品且数量大于5的客户
- xamarin - 如何在 Xamarin 中将绑定值从一个类传递到另一个类?
- python-3.x - 从字符串中删除字符(DataFrame)
- vba - 确定 powerpoint 中的单位设置
- javascript - 如何解决Node js unicode转换
- visual-studio-code - 如何在 vscode 中选择非第一建议使用键盘?
- reactjs - 自定义 react-admin 拖放列表
- javascript - Recharts — 有没有办法在 RadarChart 的图表和标签之间添加填充?