环境基线:Debian 13、Meson 1.7.0、Ninja 1.12.1、GCC 14.2.0、libvips 8.18.7
安装前缀:/usr/local;
本文档用于在 Debian 13 上安装 Meson/Ninja 构建工具,并通过源码方式编译安装 libvips 8.18.7。目标是获得可供命令行、PHP FFI、Intervention Image Vips 驱动等程序调用的完整 libvips 环境。
最终目标:vips 命令位于 /usr/local/bin/vips,动态库位于 /usr/local/lib,pkg-config 能识别 vips 8.18.7。
|------------|------------------------------|
| 项目 | 预期结果 |
| Meson | 1.7.0 |
| Ninja | 1.12.1 |
| GCC | 14.2.0 |
| libvips | 8.18.7 |
| vips 命令 | /usr/local/bin/vips |
| 动态库 | /usr/local/lib/libvips.so.42 |
| pkg-config | 8.18.7 |
bash
// 安装 Meson、Ninja 与基础编译工具
apt install -y meson ninja-build build-essential pkg-config
// 最低的基础依赖
apt install -y \
build-essential \
pkg-config \
meson \
ninja-build \
libglib2.0-dev \
libexpat1-dev
// 常用图片格式与扩展功能依赖
apt install -y \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libwebp-dev \
libheif-dev \
libarchive-dev \
librsvg2-dev \
libpoppler-glib-dev \
liblcms2-dev \
libfftw3-dev \
libpango1.0-dev \
libfontconfig1-dev \
libcgif-dev \
libjxl-dev \
libspng-dev \
libimagequant-dev \
libopenexr-dev \
libopenslide-dev \
libcfitsio-dev \
libmatio-dev
bash
mkdir -p /usr/local/src
cd /usr/local/src
wget https://github.com/libvips/libvips/releases/download/v8.18.7/vips-8.18.7.tar.xz
tar -xf vips-8.18.7.tar.xz
cd vips-8.18.7
bash
// 首次编译必须先执行 meson setup。它负责探测编译器、依赖库和 libvips 的可选功能,并生成 build 目录。
meson setup build \
--prefix=/usr/local \
--libdir=lib \
--buildtype=release
1、--prefix=/usr/local:最终把命令、库、头文件等安装到 /usr/local。
2、--libdir=lib:把动态库放在 /usr/local/lib,避免进入带架构名的子目录。
3、--buildtype=release:采用发布优化方式编译。
4、build:Meson 构建目录,源代码目录本身保持相对整洁。
什么时候不要再执行 setup:如果当前 build 目录已经成功配置、编译并安装,而且没有改变依赖或编译参数,就不需要再次执行 meson setup。
bash
// 编译
meson compile -C build
// 运行测试
meson test -C build
// 安装
meson install -C build
// 源码安装动态库后执行 ldconfig,让系统动态链接器缓存识别 /usr/local/lib/libvips.so*
ldconfig
安装后,需要验证:
bash
vips --version
which vips
pkg-config --modversion vips
// 动态库
ldconfig -p | grep vips
// 图片格式支持
vips -l foreign
// 准备一张 JPEG 图片,例如 /tmp/test.jpg,然后执行以下命令。
vipsheader /tmp/test.jpg
vips thumbnail /tmp/test.jpg /tmp/test_300.webp 300
vipsheader /tmp/test_300.webp
如果可以正确读取源图片、生成 WebP 缩略图并再次读取输出文件,则 libvips 命令行链路已经正常。