MacOS 11.7.10下Homebrew升级libheif报错求助
解决MacOS 11.7.10下libheif升级时gdk-pixbuf-2.0找不到的问题
问题概况
在MacOS 11.7.10系统中升级libheif从1.16.2到1.18.2时,CMake报错无法找到gdk-pixbuf-2.0包。尽管在.zshrc中配置了PKG_CONFIG_PATH,但brew升级时的环境变量并未包含该路径,进而触发安装目标错误。
报错信息
==> Upgrading libheif 1.16.2 -> 1.18.2 ==> cmake -S . -B build -DWITH_RAV1E=OFF -DWITH_DAV1D=OFF -DWITH_SvtEnc=OFF -DCMAKE_INSTALL_RPATH=@loader_path/../lib Last 15 lines from /Users/heiko/Library/Logs/Homebrew/libheif/01.cmake: -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2") -- Checking for module 'gdk-pixbuf-2.0' -- Found gdk-pixbuf-2.0, version 2.42.12 Package gdk-pixbuf-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gdk-pixbuf-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gdk-pixbuf-2.0' found CMake Error at gdk-pixbuf/CMakeLists.txt:19 (install): install TARGETS given no LIBRARY DESTINATION for module target "pixbufloader-heif".
当前已配置的PKG_CONFIG_PATH
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/Cellar/gdk-pixbuf/2.42.12/include/gdk-pixbuf-2.0:/usr/local/Cellar/gdk-pixbuf/2.42.12/lib"
brew运行时的PKG_CONFIG_PATH片段
... ==> ENV ... PKG_CONFIG_PATH: /usr/local/opt/brotli/lib/pkgconfig:/usr/local/opt/highway/lib/pkgconfig:/usr/local/opt/imath/lib/pkgconfig:/usr/local/opt/jpeg-turbo/lib/pkgconfig:/usr/local/opt/libpng/lib/pkgconfig:/usr/local/opt/xz/lib/pkgconfig:/usr/local/opt/lz4/lib/pkgconfig:/usr/local/opt/zstd/lib/pkgconfig:/usr/local/opt/libtiff/lib/pkgconfig:/usr/local/opt/little-cms2/lib/pkgconfig:/usr/local/opt/openexr/lib/pkgconfig:/usr/local/opt/webp/lib/pkgconfig:/usr/local/opt/jpeg-xl/lib/pkgconfig:/usr/local/opt/libvmaf/lib/pkgconfig:/usr/local/opt/aom/lib/pkgconfig:/usr/local/opt/libde265/lib/pkgconfig:/usr/local/opt/pcre2/lib/pkgconfig:/usr/local/opt/mpdecimal/lib/pkgconfig:/usr/local/opt/openssl@3/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig:/usr/local/opt/sqlite/lib/pkgconfig:/usr/local/opt/python@3.12/lib/pkgconfig:/usr/local/opt/glib/lib/pkgconfig:/usr/local/opt/x265/lib/pkgconfig:/usr/local/opt/shared-mime-info/share/pkgconfig ...
解决方案
1. 直接在升级命令中传递正确的PKG_CONFIG_PATH
brew运行时会重置环境变量,不会读取.zshrc中的配置。需要在升级命令前直接指定包含gdk-pixbuf.pc文件的路径(注意:pkg-config需要的是.pc文件所在目录,不是include或lib目录):
PKG_CONFIG_PATH="/usr/local/Cellar/gdk-pixbuf/2.42.12/lib/pkgconfig:$PKG_CONFIG_PATH" brew upgrade libheif --verbose
2. 修复gdk-pixbuf的brew链接
如果gdk-pixbuf的.pc文件未被正确链接到/usr/local/lib/pkgconfig,执行以下命令强制重新链接:
brew link gdk-pixbuf --force
链接完成后,直接运行brew upgrade libheif --verbose即可,此时brew会自动识别到gdk-pixbuf的配置。
3. 修正.zshrc中的PKG_CONFIG_PATH配置(可选)
如果后续需要让其他工具也能识别gdk-pixbuf,修正.zshrc中的路径为正确的pkgconfig目录:
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/Cellar/gdk-pixbuf/2.42.12/lib/pkgconfig"
执行source ~/.zshrc生效,但此配置依然不会被brew升级过程继承。
内容的提问来源于stack exchange,提问作者Ripley
相关产品推荐
相关产品推荐

