如何找出g ++包含的头文件?

时间:2015-04-04 02:22:44

标签: c++ gcc g++

我正在编译一个开源项目,该项目未能声明sincos函数未声明。当我查看math.h时,声明就在那里。我在math.h的顶部添加了一个警告,看它是否包含在内(如果有的话会打印出警告),并且在编译代码时它实际上永远不会打印出来。因此,我认为它可能包含在/usr/include/math.h以外的其他地方。

问题是它是一个巨大的代码库,并且只要跟踪包含目录等手册就非常难以理解。

有没有办法告诉g ++打印它解析的所有包含的完整路径?

2 个答案:

答案 0 :(得分:3)

您可以使用-E选项仅运行预处理器。这将在使用所有头文件进行预处理后生成源代码,这可能会很长。

相反,您可以生成一个makefile来显示依赖项。如果您使用-E -M,则应该会看到该文件所依赖的所有包含文件的列表。

答案 1 :(得分:0)

除了g++ -E -C之外,我发现-v参数对这种情况很有用。它将为您提供所有默认搜索路径/ sysrooty内容,以及传递给子工具的任何默认内部参数。

此外,此命令将告诉您gcc是否正在尝试使用不存在的默认包含路径,这是错误配置的gcc工具链中的常见问题。