最近把工作机的 ubuntu 换成了 manjaro,但是发现官方的包里没有静态库,不是很方便。
可能应该问 arch 是出于什么考虑?
Linux 不都是用的动态库吗?
有些项目为了部署方便,链接的是静态库。
节省硬盘空间,提升系统更新、安装速度。
毕竟讲真,装静态库真的是几乎用不到,白白浪费系统空间。我就很不喜欢 Debian 把静态库动态库放一个包里面。
如果你的项目要静态连接个什么东西吧,拿 openssl 举例,正确做法不应该是编译 openssl 吗,难道用系统的 .a ?
libxxx-dev 包里面,99%的情况下只需要.h,.pc 等
系统里有的话当然用系统的. a,何必再费力去找代码编译呢?不过已经改用 docker 来编译了。
如果是为当前发行版编译安装软件,当然要用系统的 lib,而且当然动态链接更好,这个时候肯定选择动态链接(减少程序体积,利用 cow 机制提示程序运行速度和减少内存占用),静态库用不到
如果是编译出来想作为二进制向用户发行,我反正是不敢用某一个发行版的 .a,换一个发行版(甚至版本)就是一堆堆的坑,这个时候肯定从上游拿代码,定制编译选项(例如减少 .a 本身带来的依赖)编译
所以往系统里装静态库真的是个糟主意