Ubuntu 24.04下Meson构建因gobject-introspection-1.0依赖不满足失败
嘿,我看你在Ubuntu 24.04上用Meson构建项目时碰到了依赖版本卡壳的问题,刚好我之前也处理过类似情况,来给你一步步拆解和解决~
问题复盘
你碰到的错误本质是pkg-config校验依赖版本不通过,具体的错误输出应该是这样的:
Called: `/usr/bin/pkg-config --modversion gobject-introspection-1.0` -> 1 stderr: Package dependency requirement 'glib-2.0 >= 2.80.0' could not be satisfied. Package 'glib-2.0' has version '2.72.0', required version is '>= 2.80.0' Package dependency requirement 'gobject-2.0 >= 2.80.0' could not be satisfied. Package 'gobject-2.0' has version '2.72.0', required version is '>= 2.80.0'
正如你排查到的,问题根源在系统的gobject-introspection-1.0.pc配置文件里:它明确要求glib-2.0 >= 2.80.0和gobject-2.0 >= 2.80.0,但你当前系统安装的这两个包版本只有2.72.0,自然就触发了校验失败,导致Meson构建中断。
几种解决思路(按推荐度排序)
1. 优先升级系统依赖包(最稳妥)
Ubuntu 24.04作为LTS版本,官方源里应该有满足要求的glib/gobject更新版本,先试试全量升级系统包:
sudo apt update && sudo apt full-upgrade
升级完成后,用下面的命令确认版本是否达标:
pkg-config --modversion glib-2.0 pkg-config --modversion gobject-2.0
如果输出的版本都≥2.80.0,那直接重新运行Meson构建就可以了~
2. 临时修改.pc文件的依赖要求(紧急方案,不推荐长期用)
如果你暂时没法升级系统(比如怕影响其他项目),可以临时修改gobject-introspection-1.0.pc的依赖版本限制:
sudo nano /usr/lib/x86_64-linux-gnu/pkgconfig/gobject-introspection-1.0.pc
找到Requires:那一行,把版本要求从>=2.80.0改成你当前的>=2.72.0,修改后应该是这样:
Requires: glib-2.0 >= 2.72.0, gobject-2.0 >= 2.72.0
保存退出后再跑Meson构建,应该能绕过校验。但要注意:这个修改会被后续的系统包更新覆盖,而且可能因为版本不匹配导致运行时bug,只能作为临时救急的手段。
3. 从源码编译安装高版本glib/gobject(适合自定义环境)
如果官方源里确实没有满足要求的版本,那就手动从源码编译安装:
首先安装编译依赖:
sudo apt install build-essential git meson ninja-build libffi-dev libpcre2-dev
然后克隆glib的源码仓库,切换到2.80.0或更高的稳定版:
git clone https://gitlab.gnome.org/GNOME/glib.git cd glib git checkout 2.80.0 # 也可以选最新的稳定版tag,比如2.82.x
接着编译安装到/usr/local目录(避免覆盖系统自带版本):
meson setup build --prefix=/usr/local ninja -C build sudo ninja -C build install
最后让pkg-config优先找到我们手动安装的版本:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
做完这些再运行Meson构建,依赖校验应该就能通过了。
额外小建议
如果是长期的项目开发,更推荐用Docker这类容器工具隔离环境——拉一个干净的Ubuntu 24.04镜像,在容器里配置好所有依赖再构建,这样既不会污染本地系统,也能保证环境的一致性~
备注:内容来源于stack exchange,提问作者xenoid

