幾個概念:
1. 核心原始碼樹:
2. 驅動最終以*.ko的形式生成,insmod的本質就是將ko檔案與執行的核心進行鏈結的過程。類似於編譯helloworld的鏈結過程。
鏈結必然需要先進行編譯,以便確定所需的外部符號(export_symbols)是否存在,因為有些符號(函式或全域性變數)在
核心中。在驅動中如果使用到這些符號,必須預留乙個位置,insmod時進一步確定這些符號的具體位置(符號繫結)。
如果核心都沒有編譯過,怎麼知道這些符號有沒有編入核心中;
編譯linux的步驟:
1:首先要檢視自己系統是使用的核心版本
>> uname -r
如果系統自動安裝了原始碼
>> ls
>>apt-cache search linux-source
linux-source -
linux
kernel source with ubuntu patches
linux-source-3.2.0 - linux kernel source for version 3.2.0 with ubuntu patches
#sudo apt-get install linux-source-3.2.0
# sudo tar jxvf linux-source-3.2.0.tar.bz2
解壓之後會生成乙個新的目錄/usr/src/linux-source-3.2.0,現在所有的源**都在裡面
3:現在開始配置核心,有三種選擇選擇方式1:make oldconfig 2:make menuconfig 3:make xconfig
我選擇的是最快的配置原版的配置方法
#sudo make oldconfig
配置完成之後就要開始對核心進行編譯了
在配置時,會出現因為配置過程中的config_rts5139值為空而出現編譯錯誤,建議配置為n:
當然,也可以在.config隱藏檔案中修改過來;
4:編譯核心
#sudo make
這個過程很漫長,建議去做做別別的事情吧~;大約需要1個小時;
5. #sudo make bzimage
編譯核心的結果最終出現了幾個錯誤,但最終對那個hello world 沒有造成影響
執行結束之後,會在當前目錄下面生成乙個新的檔案:vmlinux
5:然後就是編譯模組了
#sudo make modules
6:安裝模組
#sudo make modules_install
執行結束之後,會在/lib/modules下生成乙個新的目錄/lib/modules/3.2.0/
在隨後的編譯模組檔案時,需要用到這個路徑下的build目錄。到這一步,核心就編譯完成了
編譯 linux 核心
一 準備工作 tpv te0 首先說明,下面帶 號的行都是要輸入的命令列,且本文提到的所有命令列都在終端裡輸入。ixpub技術部落格 rc0p a6zx j 啟動linux系統,並用根使用者登入,進入終端模式下。6i sb w,a0 ixpub技術部落格c gng,y y ixpub技術部落格 k,...
linux編譯核心
red hat linux版本的核心編譯 make j2 編譯 make modules make modules install make install cd boot mkinitramfs o initrd.img 2.6.30.10 2.6.30.10 此項可能不需要 vim boot g...
Linux核心編譯
經過幾天的努力,本人終於把乙個核心編譯成功了,嘿嘿,現在把編譯過程記下來,以後再接再勵,注意 以下的操作都要有root許可權。linux 2.6.36.tar.bz2。2 解壓縮。cd usr src tar xvf home ibm linux 2.6.36.tar.bz2.usr src下就會多...