macOS下手动卸载旧版glib及meson依赖检测方法咨询
问题解决:meson检测到旧版glib(macOS 12.5)
能否手动卸载旧版glib?
绝对不能手动卸载系统预装的旧版glib(2.36.0)。macOS系统的核心组件(比如Finder、Terminal、系统框架)都依赖这个版本的glib,强行卸载会导致系统崩溃,甚至无法正常启动。
brew安装的glib(2.72.3)是独立于系统版本的,两者可以共存,你需要做的是让meson优先使用brew提供的新版,而非卸载旧版。
meson检测glib版本的方式
meson依赖pkg-config工具来查找glib的相关信息(包括版本号、编译链接参数):
- 当meson执行
dependency('glib-2.0')时,会调用pkg-config查询glib-2.0.pc配置文件 pkg-config会按照PKG_CONFIG_PATH环境变量的顺序搜索.pc文件,先找到的文件对应的版本会被meson采用- 系统预装的glib的
.pc文件通常在/usr/lib/pkgconfig,而brew安装的在$(brew --prefix glib)/lib/pkgconfig,如果系统路径在PKG_CONFIG_PATH的优先级更高,就会检测到旧版
解决方法:让meson优先使用brew的glib
1. 临时配置环境变量
在执行meson编译前,先设置环境变量让pkg-config优先找到brew的glib:
# 设置PKG_CONFIG_PATH,优先指向brew的glib配置文件路径 export PKG_CONFIG_PATH=$(brew --prefix glib)/lib/pkgconfig:$PKG_CONFIG_PATH # 同时确保brew的pkg-config被优先调用(避免使用系统自带的pkg-config) export PATH=$(brew --prefix)/bin:$PATH
2. 验证配置是否生效
执行以下命令,确认输出为2.72.3:
pkg-config --modversion glib-2.0
3. 重新运行meson配置
验证通过后,重新执行meson的setup命令即可:
meson setup build --reconfigure
备选方案:直接给meson指定pkg-config路径
也可以在meson setup时直接通过参数指定pkg-config路径,无需临时设置环境变量:
meson setup build --pkg-config-path=$(brew --prefix glib)/lib/pkgconfig
内容的提问来源于stack exchange,提问作者user1418067
相关产品推荐
相关产品推荐

