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

时间:2017-01-03 06:27:46

标签: c++ linker g++

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

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

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

1 个答案:

答案 0 :(得分:10)

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

GCC调用系统链接器ld来执行 连锁。 GCC的-L选项及其-l选项的出现都会通过 保留订单的链接器。

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

-La -lfoo -Lb -lbar

相当于以下任何一项:

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

这是the documentation