【问题标题】:Specifying order in gcc and g++ include and lib paths在 gcc 和 g++ 包含和 lib 路径中指定顺序
【发布时间】:2017-05-17 04:46:53
【问题描述】:

我有多个版本的库,都具有相同的名称(增强库),每个版本都安装在自己的目录中。我知道如何指示编译器和链接器在某些目录中搜索头文件和库(-I-L)。 I am also aware 如何将实际库文件传递给链接器。

我的问题是如何在编译器和链接器的搜索路径中指定优先级,以便在搜索文件夹 B 之前搜索文件夹 A 并采用 A 的库版本而不是 @987654327 @的。我对所有符合条件的目录之间的顺序感兴趣,即默认的gccg++ 目录,以及在-I-L 之后指定的目录。

我的发行版是 Ubuntu 14.04,我使用 g++ 4.86

【问题讨论】:

    标签: c++ linker g++


    【解决方案1】:

    GCC 将按照从左到右的顺序搜索您的 -I 目录 出现在您的命令行中,它将搜索您之前的所有 -I 目录 默认的#include 目录。这里是the documentation

    GCC 调用系统链接器ld 来执行 连锁。 GCC 的 -L 选项及其 -l 选项的出现通过 到链接器并保留它们的顺序。

    链接器将按从左到右的顺序搜索您的 -L 目录 它们出现在命令行中,它将搜索您的所有 -L 目录 在默认链接目录之前。所有-L 选项,按照指定的顺序, 适用于所有-l 选项,无论-L-l 选项如何混合 在命令行中。例如

    -La -lfoo -Lb -lbar
    

    等价于:

    -La -Lb -lfoo -lbar
    -lfoo -La -Lb -lbar
    -lfoo -lbar -La -Lb
    

    这里是the documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-02
      • 2021-11-24
      • 2014-06-05
      • 2015-01-05
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多