O0的內核
新手來說, 調試內核c代碼經常上下亂跳, 但是O0又無法通過編譯, 做了一個實驗, 對於所有的c文件, 先嚐試O0, 如果錯誤的話, 用O1來編譯, 但是最後有一些符號找不到, 因為O0會多調用一些函數, 在這些問題都解決了之後, 最後居然報出, 某個section太大了, 看來這個問題很複雜
下麵是一個簡單得方法, 不要一口氣把所有的文件都O0, 需要調試哪個, 把具體文件O0就行了
make vmlinux KCFLAGS="-g3 -O1 -Wno-maybe-uninitialized" -j100 CFLAGS_page_alloc.o='-O0 -ftree-ter'
-O0 -ftree-ter就是把優化開到最小, 效果好很多, 不再上下亂跳了
那麼這個是怎麼找到的呢
就是把O1對應的所有flag都加上, 然後一個個去掉, 看能否通過編譯, 獲得最小集
gcc -O1 -Q --help=optimizers |grep enable |awk '{print $1}'
最後更新:2017-09-25 12:02:58