pycparser/utils/fake_libc_include
我为找到的每个头文件创建了假头文件kernel/sched/core.c
并放入
#include "_fake_defines.h"
#include "_fake_typedefs.h"
进入他们。其他一些缺少的头文件,例如 kernel/sched/sched.h 中的很多头文件。所以我也添加了它们。
预处理整个东西
gcc -nostdinc -E -Ipycparser/utils/fake_libc_include ../kernel/sched/core.c > core_pp.c
这没有错误。
所以我试图获取函数名称
python3 examples/func_defs.py core_pp.c
但它给了我错误:
Traceback (most recent call last):
File "examples/func_defs.py", line 46, in <module>
show_func_defs(filename)
File "examples/func_defs.py", line 34, in show_func_defs
cpp_args=r'-Iutils/fake_libc_include')
File "/usr/local/lib/python3.4/dist-packages/pycparser/__init__.py", line 93, in parse_file
return parser.parse(text, filename)
File "/usr/local/lib/python3.4/dist-packages/pycparser/c_parser.py", line 151, in parse
debug=debuglevel)
File "/usr/local/lib/python3.4/dist-packages/pycparser/ply/yacc.py", line 331, in parse
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
File "/usr/local/lib/python3.4/dist-packages/pycparser/ply/yacc.py", line 1181, in parseopt_notrack
tok = call_errorfunc(self.errorfunc, errtoken, self)
File "/usr/local/lib/python3.4/dist-packages/pycparser/ply/yacc.py", line 193, in call_errorfunc
r = errorfunc(token)
File "/usr/local/lib/python3.4/dist-packages/pycparser/c_parser.py", line 1721, in p_error
column=self.clex.find_tok_column(p)))
File "/usr/local/lib/python3.4/dist-packages/pycparser/plyparser.py", line 55, in _parse_error
raise ParseError("%s: %s" % (coord, msg))
pycparser.plyparser.ParseError: ../kernel/sched/cpupri.h:14:2: before: atomic_t
我究竟做错了什么?我已经尝试了此博客条目中的 redis 示例,并且成功了。