0

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

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

#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.自动添加。这是gcc的功能还是错误?

这里说明了这如何破坏我的 gcc 编译:Error Compiling gcc-4.7.2

编译器:gcc-4.6.1

操作系统:Ubuntu 11.10

谢谢。

4

1 回答 1

0

这是 gcc 的一个功能,如此处所述

引用文档:

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

于 2013-01-16T15:12:34.423 回答