歡迎您光臨本站 註冊首頁

以-O0 -g編譯Linux內核的辦法

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

  今天為了研究linux的slub分配器.編譯了um來調試.但是由於linux內核默認情況下使用-O2,而最低要求需要-O1才能編譯成功.在打開優化的情況下,調試起來源代碼會亂跳.為了解決這個問題,我折騰了幾分鐘.發現有三個地方需要修改就可以了

  第一處 include/linux/compiler-gcc.h 在裡面inline __inline這些定義之後都有 aways_inline的attribute,要把這個屬性刪除

  另一處, 在menuconfig里,kernel hack裡面不選中"Force gcc to inline functions marked inline"

  當然,最後,Makefile裡面那個-O2要刪除掉,也就是不用任何優化來編譯(貌似這個時候就是-O0)

  之後用make ARCH=um 就可以編譯成功了. 我精簡過的um編譯出來大概15M.(選擇了compile the kernel with debug info)

[火星人 ] 以-O0 -g編譯Linux內核的辦法已經有423次圍觀

http://coctec.com/docs/linux/show-post-188124.html