c++ - 在 gcc 和 g++ include 和 lib 路径中指定顺序

标签 c++ linker g++

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

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

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

最佳答案

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

关于c++ - 在 gcc 和 g++ include 和 lib 路径中指定顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41437648/

相关文章:

gcc - 使用链接器映射内存

C++:链接库消失并在执行期间出现段错误

c++ - G++ - 未定义对已定义成员函数的引用

c++ - 围绕任意轴旋转平面二维对象

c++ - 如何将 unicode 字符串转换为其 unicode 转义字符?

c++ - 如何使用命名共享内存?

c - PULMon 无法构建 (LNK2019)

gcc - g++ 'nullptr' 未在此范围内声明

c++ - 将嵌套类型引用为类模板参数的问题

c++ - 在 Objective-C(不是 iPhone)中编译 Eigen 时出现问题