System Libraries: 跨平台底层库速查
包管理器升级时,经常会看到一些不认识的底层库(harfbuzz、giflib、little-cms2 等)。它们通常不是自己主动装的,而是被某个上层软件依赖,顺带装上。 这篇文章记录这些底层库是什么、做什么、各平台叫什么包名。库本身是跨平台的,macOS(Homebrew)、Linux(apt / pacman / dnf)上都有,因此不按平台拆分。 遇到不认识的包时,怎么在 macOS 上查依赖关系,见 Homebrew (brew)。 索引 库 功能 常见使用方 harfbuzz OpenType 文本整形(text shaping) Pango、Qt、Firefox、Chromium、LibreOffice、OpenJDK freetype 字体解析与字形光栅化 Linux 桌面、Android、OpenJDK、各类游戏引擎 giflib GIF 图片编解码 OpenJDK、ImageMagick libpng PNG 图片编解码 几乎所有图形软件 jpeg-turbo JPEG 编解码(libjpeg 的 SIMD 加速实现) OpenJDK、浏览器、ImageMagick little-cms2 色彩管理(ICC profile) OpenJDK、GIMP、Ghostscript 包名对照 各平台的包名不完全一致,Linux 发行版通常把运行时库和开发头文件拆成两个包,编译其他软件时需要装带 dev / devel 的那个。 库 Homebrew Debian / Ubuntu(开发包) Arch Fedora / RHEL(开发包) harfbuzz harfbuzz libharfbuzz-dev harfbuzz harfbuzz-devel freetype freetype libfreetype-dev freetype2 freetype-devel giflib giflib libgif-dev giflib giflib-devel libpng libpng libpng-dev libpng libpng-devel jpeg-turbo jpeg-turbo libjpeg-dev libjpeg-turbo libjpeg-turbo-devel little-cms2 little-cms2 liblcms2-dev lcms2 lcms2-devel Arch 和 Homebrew 没有 dev / devel 拆分,头文件和库在同一个包里。 ...