pkg-config 和 LD_LIBRARY_PATH 的区别

Difference about pkg-config and LD_LIBRARY_PATH

我试图在 Ubuntu 上了解 C++ 中的编译和 link 过程。

据我了解,pkg-config通常用于通过PKG_CONFIG_PATH提取.pc文件中定义的元数据,然后定位编译时需要的包含和库文件link正在。

我的问题是,既然我们已经有了 pkg-config,为什么还要费心使用 LD_LIBRARY_PATHld.so.confpkg-configLD_LIBRARY_PATH有不同的用途吗(我知道LD_LIBRARY_PATHld.so.conf优先级高),还是LD_LIBRARY_PATH用于没有的情况.pc 文件,还是只是这个优先事项?

LD_LIBRARY_PATHld.so.conf 用于在 运行 时间定位共享库,当加载程序启动程序时 (ld.so)。 pkg-config 文件改为包含 compiler/linker 标志(-I-L-l 等)构建 程序使用特定库(例如,通过 -Lpath 找到链接的 shlibs)。

另请注意,许多库缺少 .pc 配置。