Re: [問題] Kernel build fail

看板LinuxDev作者 (真.粽子無雙)時間8年前 (2015/07/26 13:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.228.151.2 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1437887351.A.61F.html
文章代碼(AID): #1Lj6jtOV (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #1Lj6jtOV (LinuxDev)