You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autoconf中PKG_CONFIG_PATH在configure.ac的PKG_CHECK_EXISTS中失效求助

问题

我希望在自定义PKG_CONFIG_PATH路径下检查gmodule是否存在,编写的configure.ac代码如下:

// configure.ac
AC_SUBST([PKG_CONFIG_PATH],"./glib/lib/x86_64-linux-gnu/pkgconfig/")
PKG_PROG_PKG_CONFIG
PKG_CHECK_EXISTS([gmodule-2.0],[],[    AC_MSG_ERROR(can't find gmodule in glib-2.0)
])

但运行configure时出现如下错误:

checking for libunwind.h... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
configure: error: can't find gmodule in glib-2.0

我可以100%确认gmodule-2.0.pc在自定义路径中:

> ls ./glib/lib/x86_64-linux-gnu/pkgconfig/                            
gio-2.0.pc  gio-unix-2.0.pc  glib-2.0.pc  gmodule-2.0.pc  gmodule-export-2.0.pc  gmodule-no-export-2.0.pc  gobject-2.0.pc  gthread-2.0.pc

且手动设置PKG_CONFIG_PATH后,pkg-config可以正常找到gmodule-2.0:

> PKG_CONFIG_PATH="./glib/lib/x86_64-linux-gnu/pkgconfig/" pkg-config gmodule-2.0 --cflags 
-pthread -I/home/xxx/fuzz/test/StochFuzz/glib/include -I/home/xxx/fuzz/test/StochFuzz/glib/include/glib-2.0 -I/home/xxx/fuzz/test/StochFuzz/glib/lib/x86_64-linux-gnu/glib-2.0/include

请问我遗漏了什么?

解决方法

AC_SUBST的作用是将变量传递给后续生成的Makefile,不会修改configure脚本运行时的环境变量。你当前的代码里,先调用AC_SUBST设置PKG_CONFIG_PATH,但此时这个变量并没有被加入到configure的运行环境中,所以后续的PKG_PROG_PKG_CONFIG和PKG_CHECK_EXISTS执行时,pkg-config还是使用系统默认的PKG_CONFIG_PATH,找不到自定义路径下的.pc文件。

你需要在调用pkg-config相关宏之前,先把自定义路径添加到PKG_CONFIG_PATH环境变量中,以下是两种可行的写法:

  • 方式一:直接修改并导出环境变量
    在configure.ac开头添加如下代码,优先使用自定义路径,同时保留原有路径:
export PKG_CONFIG_PATH="./glib/lib/x86_64-linux-gnu/pkgconfig/:$PKG_CONFIG_PATH"
  • 方式二:保存原有路径后再设置
    如果需要更清晰地管理原有路径,可以这样写:
# 保存原有的PKG_CONFIG_PATH
PKG_CONFIG_PATH_ORIG="$PKG_CONFIG_PATH"
# 组合新的PKG_CONFIG_PATH,自定义路径在前
PKG_CONFIG_PATH="./glib/lib/x86_64-linux-gnu/pkgconfig/:$PKG_CONFIG_PATH_ORIG"
export PKG_CONFIG_PATH

修改完成后,重新运行autoreconf -i生成新的configure脚本,再执行./configure就能正常找到gmodule-2.0了。

内容的提问来源于stack exchange,提问作者syheliel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:50:28