如果C_INCLUDE_PATH包含尾随的`:`,为什么`.`会自动添加到gcc头搜索路径中

时间:2013-01-16 04:34:21

标签: gcc

实际上我在编译gcc-4.7.2时遇到了这个问题。但我可以简单地重现问题如下:

我有一个简单的源文件hello.c用于测试。它的内容只是一个include指令:

#include "hello.h"

在bash中,我首先运行以下命令:

export C_INCLUDE_PATH=/home/dwang/local/include:

然后我跑:

gcc -v -E hello.c

输出搜索路径:

#include "..." search starts here:
#include <...> search starts here:
/home/dwang/local/include
/export/scratch/packages/include/
.
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include
[...]

然后,如果我从:删除C_INCLUDE_PATH尾随:

export C_INCLUDE_PATH=/home/dwang/local/include

搜索路径是:

#include "..." search starts here:
#include <...> search starts here:
/home/dwang/local/include
/export/scratch/packages/include/
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include
[...]

如果:中有C_INCLUDE_PATH后跟,.会自动添加{{1}}。这是gcc的功能还是bug?

这会如何破坏我的gcc编译:Error Compiling gcc-4.7.2

编译器:gcc-4.6.1

操作系统:Ubuntu 11.10

感谢。

1 个答案:

答案 0 :(得分:0)

这是gcc的一项功能,记录为here

引用文档:

  

在所有这些变量中,空元素指示编译器搜索其当前工作目录。空元素可以出现在路径的开头或结尾。例如,如果CPATH的值为:/ special / include,则其效果与`-I相同。 -I /特/包括”。