【问题标题】:Difference about pkg-config and LD_LIBRARY_PATHpkg-config 和 LD_LIBRARY_PATH 的区别
【发布时间】:2019-07-14 07:46:48
【问题描述】:

我正在尝试了解 Ubuntu 上 C++ 中的编译和链接过程。

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

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

【问题讨论】:

    标签: c++ ubuntu compilation static-linking dynamic-linking


    【解决方案1】:

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

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

    【讨论】:

    • 我可以这样理解吗:ld.so.conf 只用于链接,而pkg-config 可以用于编译和链接以定位和加载include 文件和库(静态或动态)根据.pc 配置)。所以pkg-config 更具体。
    • @Silentroar 不,ld.so.conf(和LD_LIBRARY_PATH)仅用于运行pkg-config 用于编译和链接。
    • 我明白了。谢谢你的解释!
    • @Silentroar Np,如果它回答了你的问题,你可能想接受它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2015-03-12
    • 2013-01-20
    • 2012-11-17
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多