我有一个库的多个版本,所有版本都具有相同的名称(boost 库),每个版本都安装在自己的目录中。我知道如何指示编译器和链接器在某些目录中搜索头文件和库(-I
和 -L
)。 I am also aware如何将实际的库文件传递给链接器。
我的问题是如何在编译器和链接器的搜索路径中指定优先级,以便它在搜索文件夹 B
之前搜索文件夹 A
并获取 A
的库版本而不是 B
的。我对所有符合条件的目录之间的顺序感兴趣,即默认的 gcc
和 g++
目录,以及在 -I
和 之后指定的目录>-L
。
我的发行版是 Ubuntu 14.04
,我使用 g++
4.8
到 6
。
最佳答案
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
关于c++ - 在 gcc 和 g++ include 和 lib 路径中指定顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41437648/