一直在作DSP的驅動開發,思慮良久,以爲對後續職業發展不利,面太窄,決定轉向ARM+Linux平臺開發,遂開始學習Linux,看了一些資料,有了必定的基礎以後在網上找了一個很簡單的hello字符驅動準備實踐一下,結果一編譯就遇見找不到Linux不少頭文件的錯誤(以下圖),斷斷續續搞了有兩週,網上也查了好多資料,其中也有說道須要構建Linux內核源碼樹,可是看Ubunt系統裝好後/lib/modules目錄下就帶有3.13.0-32-generic目錄,按理說應該就是內核源碼樹,可是不知道爲何不能用。並且系統自帶/usr/src下面的linux-headers-3.13.0-32和linux-headers-3.13.0-32-generic彷佛不是完整的內核源碼。這兩個問題如今還沒搞清楚,待定。linux
下面是經過我參考網上的資料及本身的實踐寫的構建內核源碼樹的步驟:學習
1. 執行 sudo apt-cache search linux-source 獲取當前的內核版本號爲linux-source-3.13.0spa
2. 執行 sudo apt-get install linux-source-3.13.0 下載內核版本,下載存儲目錄在/usr/src中。blog
3. 使用 tar -jxvf linux-source-3.13.0.tar.bz2 解壓下載的內核文件資源
4. 進入 linux-source-3.13.0 內核文件夾開發
5. 執行 sudo make oldconfig 生成.config配置文件(一路按Enter鍵)get
6. 執行 sudo chmod 660 .config 設置器對非root用戶的寫權限(不然後續對.config文件的修改不能保存)源碼
7. 執行 vi .config 打開.config文件,將其中的CONFIG_RTS5139=m改成CONFIG_RTS5139=n,保存退出qt
8. 執行 sudo make 執行完畢以後(大約1-2小時),會在目錄下生成vmlinux.o文件編譯
8. 執行 sudo make modules
9. 執行 sudo make modules_install 完畢後,在/lib/modules目錄下生成3.13.11-ckt39文件夾,說明內核源碼樹構建成功。
其它問題:
1. 在進行內核編譯以前會提醒須要安裝幾個相關的軟件,以下圖所示。
安裝方法爲使用 sudo apt-get install ncurses-dev 命令,我在安裝libqt3-dev的時候提示找不到相應的資源,更換鏡像源後依然如此,最後沒有安裝這個軟件就開始構建內核源碼樹了,目前沒有出問題,不清楚這個是幹啥的,繼續做爲遺留問題吧。