我的 C 编译器在哪里解决我的#includes?

新手上路,请多包涵

这是一个非常基本的问题。我一直在学习 C++,到目前为止我只使用了标准库。我一直在包括 <iostream> 类的东西,没有任何问题。现在我想使用 Apache Xerces,所以我已经在我的机器(一个 Debian 系统)上安装了它,并且正在按照一个教程说我需要包括:

 #include <xercesc/sax2/SAX2XMLReader.hpp>

但是 g++ 说“错误:xercesc/sax2/SAX2XMLReader.hpp:没有这样的文件或目录”。它在看哪里?我需要提供更多信息吗?

谢谢。

原文由 ghallio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 479
2 个回答

使用 --verbose 选项:

 [...]
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../../../include/c++/4.4.2
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../../../include/c++/4.4.2/i686-pc-linux-gnu
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../../../include/c++/4.4.2/backward
 /usr/local/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/include-fixed
 /usr/include
End of search list.
[...]

您可以使用 -I 选项添加搜索目录,如下所述:http: //gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Directory-Options.html#Directory-Options

您还可以使用环境变量来永久更改它:http: //gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Environment-Variables.html#Environment-Variables

在您的情况下,您可以使用 CPLUS_INCLUDE_PATH

原文由 Bastien Léonard 发布,翻译遵循 CC BY-SA 2.5 许可协议

Gcc 通常开始在 /usr/include 中查找包含文件。如果您在其他目录中有包含文件,您可以在命令行中添加一个 -I 选项来告诉编译器也查看那里。

您可能必须安装 Xerces 的开发包才能获取 #include 文件。

原文由 Richard Pennington 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题