나는 kernel/sched/core.c
에서 발견 된 모든 헤더 pycparser/utils/fake_libc_include
에서 가짜 헤더 파일을 생성하고 그들에pycparser를 사용하여 Linux 커널 파일의 함수 이름을 얻는 방법?
#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
내가 잘못하고있는 중이 야 무엇을? 나는 this 블로그 항목에서 redis 예제를 시도해 보았다.