获得GCC包括GNU Autotools的路径

时间:2013-07-30 09:07:36

标签: c linux autotools

我正在编写C预处理器的实现,当在Linux上运行时,需要知道查找头文件的路径。这可以通过运行gcc -v来获得。我想将结果编译到我的预处理器的二进制文件中,而不是每次运行都要调用gcc -v,所以我现在正在考虑编写一个Python脚本,以便在编译时运行,这将获得路径和将它写入一个小的C源文件,以包含在构建中。

另一方面,我得到的印象GNU Autotools基本上是获取在构建时使用的系统特定信息的专家。 Autotools是否能够以这样的方式获取#include路径,使其可以作为字符串合并到正在构建的程序中(而不是用于构建过程)?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:4)

如果要获取GCC使用的内部include/目录,请运行gcc -print-file-name=include命令,例如在shell语法

the_gcc_include_dir=$(gcc -print-file-name=include)

$the_gcc_include_dir目录包含<stdarg.h><stddef.h>等许多文件。

您还需要include-fixed/目录,所以

the_gcc_include_fixed_dir=$(gcc -print-file-name=include-fixed)

$the_gcc_include_fixed_dir包含<limits.h>等文件以及有用的README

您可能不需要 autotools

答案 1 :(得分:0)

我最终用Python脚本解析了gcc的include路径:

print 'string gcc_include_path[] = {'
for s in sys.stdin:
    if s[0] == ' ':
        s = s.strip()
        print '\t"'+s+'",'
print '};'

并从Makefile中调用它:

echo | cpp -Wp,-v 2>&1 >/dev/null | python include_path.py >include_path