实际上我在编译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
感谢。
答案 0 :(得分:0)
这是gcc的一项功能,记录为here
引用文档:
在所有这些变量中,空元素指示编译器搜索其当前工作目录。空元素可以出现在路径的开头或结尾。例如,如果CPATH的值为:/ special / include,则其效果与`-I相同。 -I /特/包括”。