如何在两个 .pc 文件之间进行 PKG-CONFIG select?

How does PKG-CONFIG select between two .pc files?

我有两个 glib-2.0 的 .pc 文件

/usr/lib/x86_64-linux-gnu/pkgconfig/glib-2.0.pc
/usr/local/lib/pkgconfig/glib-2.0.pc

它们的不同之处在于它们指向包含文件的位置。

/usr/lib/x86... points to /usr/include
/usr/local/lib... points to /usr/local/include

当我 运行:

时,这会导致问题
pkg-config --cflags gtk+-3.0

此 returns 以下 glib-2.0 搜索位置:

-I/usr/local/include/glib-2.0 
-I/usr/local/lib/glib-2.0/include 

而我的包管理器已将 glib 库安装到

/usr/include/glib 

问题 1:为什么 PKG-CONFIG 选择第二个位置而不是第一个位置?我怎样才能改变这个?

问题2:有两个相同的.pc文件是否异常?

问题 3:如果我确实想删除其中一个 .pc 文件,我可以安全地这样做吗?

注:

  1. 我不想将 glib 库复制到 /local/,因为包管理器会忽视它。
  2. 我不希望在 运行ning gcc 时另外添加 -I/usr/include,因为我希望 PKG-CONFIG 能够正常工作。 (我也认为这会导致其他问题,我将不得不手动修改)

您可以使用 PKG_CONFIG_LIBDIR 环境变量来覆盖默认搜索目录。

还有 PKG_CONFIG_PATH 可用作以冒号分隔的目录列表来搜索 .pc 文件。

有关详细信息,请参阅 pkg-config 的手册页。