MSYS2下Meson使用错误的pkg-config.exe路径问题
在MSYS2中用Meson交叉编译QEMU时pixman-1依赖缺失的解决办法
问题现象
配置阶段Meson抛出依赖错误:
../meson.build:553:2: ERROR: Dependency "pixman-1" not found, tried pkgconfig
查看日志可见pkg-config路径为Windows格式,在MSYS2的类UNIX环境中无法正常工作:
... Determining dependency 'pixman-1' with pkg-config executable 'C:\\msys64\\usr\\bin/pkg-config.EXE' env[PKG_CONFIG_PATH]: C:\msys64\mingw64\lib\pkgconfig;C:\msys64\mingw64\share\pkgconfig env[PKG_CONFIG_SYSTEM_INCLUDE_PATH]: C:/msys64/mingw64/include env[PKG_CONFIG_SYSTEM_LIBRARY_PATH]: C:/msys64/mingw64/lib Called `C:\msys64\usr\bin/pkg-config.EXE --modversion pixman-1` -> 1 Run-time dependency pixman-1 found: NO (tried pkgconfig) ../meson.build:553:2: ERROR: Dependency "pixman-1" not found, tried pkgconfig ...
解决路径格式问题的方法
1. 手动指定UNIX格式的pkg-config路径给Meson
运行meson setup时,通过参数直接指定MSYS2环境下的UNIX路径:
meson setup build --pkg-config=/usr/bin/pkg-config
2. 修正环境变量为UNIX格式
在MSYS2的MINGW64终端中,检查并重置相关环境变量:
- 查看当前
PKG_CONFIG_PATH:echo $PKG_CONFIG_PATH - 如果是Windows格式,重新设置为UNIX路径:
可将这条命令添加到export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig~/.bashrc或~/.zshrc中,实现永久生效。
3. 确认安装正确的pixman开发包
确保已在MSYS2的MINGW64环境下安装pixman的开发依赖:
pacman -S mingw-w64-x86_64-pixman
关于错误归属
这并非Meson或MSYS2的根本性错误,而是环境配置问题:
- MSYS2默认会自动处理路径格式转换,但如果使用Windows原生CMD而非MSYS2专用终端(如MINGW64终端),或手动将环境变量设置为Windows格式,就会出现路径不兼容的情况。
- Meson会直接读取系统环境中的路径信息,若环境变量提供的是Windows格式路径,就会导致在类UNIX环境下无法正常调用pkg-config。
内容的提问来源于stack exchange,提问作者dspGI
相关产品推荐
相关产品推荐

