Linux核心編譯

2021-06-25 11:03:19 字數 1435 閱讀 4073

幾個概念:

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下就會多...