linux – 如何排除“pkg-config –variable pc_path pkg-config”中列出的一些库路径?

我有Ubuntu 14.04从12.04升级到dist升级.我过去做了很多手动安装,比如ffmpeg,libglib等.我现在有一个很好的自定义发行版,它运行良好,但我在尝试编译应用程序时遇到问题.它源于源代码中手动安装的包与本机发行版库之间的库冲突.一个人建议我重命名/usr/local它工作但下次重启时启动失败.

当我查找由pkg-config添加的目录时

  pkg-config --variable pc_path pkg-config

它列出

 /usr/local/lib/i386-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

我不希望它在/usr/local/lib中查找路径…

如何禁止那些不让pkg-config查找的路径?

最佳答案
/usr/local中的东西通常会取代/ usr中的东西,所以我有点困惑为什么你要在那里安装库来创建一个“一个很好的自定义发行版”,但后来又不想编译它们.这些是系统实际使用的库.

无论如何,man pkg-config声称基本搜索路径:

is libdir/pkgconfig:datadir/pkgconfig where libdir is the libdir for pkg-config and datadir is
the datadir for pkg-config when it was installed.

这意味着它们被编译进来.我注意到它在ubuntu上与fedora不同 – 前者是长而包容的,而后者是短而独特的;在Fedora上我必须设置一个$PKG_CONFIG_PATH来包含/usr/local.

由于首先检查$PKG_CONFIG_PATH中的路径,您可以设置:

PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

这些在内置路径末端的事实并不重要;如果支票在没有找到任何东西的情况下到达那里,那就找不到任何东西了.

要演示其工作原理,请创建一个临时目录/ opt / bs / pkg,并将.pc文件从默认路径中的一个目录复制到其中 – 例如alsa.pc.先检查一下;

> pkg-config --libs alsa
-lasound

现在进入/opt/bs/pkg/alsa.pc并将-lasound(它在Libs:字段中)更改为-foobar.设置$PKG_CONFIG_PATH并再试一次:

> PKG_CONFIG_PATH=/opt/bs/pkg pkg-config --libs alsa
-foobar

Eureka,$PKG_CONFIG_PATH覆盖了内置路径……当然,你可以删除/ opt / bs / pkg.

转载注明原文:linux – 如何排除“pkg-config –variable pc_path pkg-config”中列出的一些库路径? - 代码日志