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

Gcc PKG-CONFIG如何在两个.pc文件之间进行选择?,gcc,pkg-config,Gcc,Pkg Config,我有两个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

我有两个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
这将返回以下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文件,我可以安全地删除吗

注:

  • 我不希望将glib库复制到/local/上,因为包经理会忽略这一点
  • 我不希望在运行gcc时添加-I/usr/include,因为我希望PKG-CONFIG能够正常工作。(我还认为这将导致其他问题,我将不得不手动修改)

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

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


    有关更多信息,请参阅pkg config的手册页。

    谢谢,更改pkg_config_LIBDIR以控制默认搜索允许我选择所需的.pc文件。是否不能将
    pkg_config_LIBDIR
    与多个目录一起使用?我在交叉编译器根目录中有一些包,在
    /usr/local/lib/pkgconfig
    中有一些包,但我希望避免与
    /usr/lib/pkgconfig
    中的任何包发生冲突。