Re: [问题] Kernel build fail

楼主: leolarrel (真.粽子无双)   2015-07-26 13:09:09
※ 引述《yshihyu (yshihyu)》之铭言:
: 最近再android 上使用 ftrace , android kernel 是 3.10.49
: cat available_filter_functions 会出现下面错误 ,
: adb shell cat /sys/kernel/debug/tracing/available_filter_functions
: /system/bin/sh: cat: /sys/kernel/debug/tracing/available_filter_functions: No
: such device
: 但是我另外版本 android kernel 3.10.69 可以正常使用
: 于是我把 android kernel-3.10.69/kernel/ftrace 程式码 porting 到
: android kernel-3.10.49/kernel/ftrace
: 编译后出现下面错误讯息
: kernel/kernel/trace/trace_sched_wakeup.c: In function 'start_wakeup_tracer':
: kernel/kernel/trace/trace_sched_wakeup.c:546:2: warning: passing argument 1
: of 'register_trace_sched_migrate_task' from incompatible pointer type
: [enabled by default]
: error, forbidden warning: trace_sched_wakeup.c:546
: make[3]: *** [kernel/trace/trace_sched_wakeup.o] Error 1
: make[2]: *** [kernel/trace] Error 2
: make[2]: *** Waiting for unfinished jobs....
: 1. 但是有产生出 trace_sched_wakeup.o , build error 为什么还是可以编译出
: trace_sched_wakeup.o
: 2. register_trace_sched_migrate_task 再整个kernel中根本没有实现这函数 , 为
: 什么3.10.69也可以编译过? 是不是Makefile 有做什么flag 阻挡?
: 有办法像shell script debug 下 -x 参数可以看到详细执行流程
: 在kernel 中像Makefile问题要怎么去分析?
: 3. 我现在被指派做kernel 部份我发现很多时候搞不懂 Makefile Kconfig,
: 初学kernel 要去研究内核编译结构嘛?还是应该专注再程式码学习?
: 谢谢
gcc 有告诉你原因了
>>passing argument 1 of 'register_trace_sched_migrate_task' from
>>incompatible pointer type
问题出在kernel/kernel/trace/trace_sched_wakeup.c 第546行
A
1)这个错误原本只是一个"警告",我猜是因为这样所以有产生trace_sched_wakeup.o,
会吐出编译错误是因为这个程式码再编译的时候被指定了gcc 参数 -Werror,这个gcc参
数表示了,不论任何"警告",都要视为"错误",所以你看到了编译错误的讯息
2)有两个可能,要马就是3.10.69的code 有这个函数的实作,只是你还没找到,要马就是
ftrace 的code 本身有用什么办法让register_trace_sched_migrate_task 相关的code
不会被编译到,就像你说的用旗标的方式
3)你的C语言的经验可能还不足,对于kernel的一些怪招难以招架,不过我是建议先研究
kernel 程式码的部分
:wq

Links booklink

Contact Us: admin [ a t ] ucptt.com