指定 gcc 和 g++ 包含和库路径中的顺序

Specifying order in gcc and g++ include and lib paths

本文关键字:路径 顺序 包含 gcc g++ 指定      更新时间:2023-10-16

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

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

我的发行版是 Ubuntu 14.04 ,我最多使用 g++ 4.8 6 .

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

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

这是文档