Linux內核編譯初體驗

2020-12-20 電子產品世界

1. 下載內核

在ftp://ftp.kernel.org/pub/linux/kernel/下載原版內核

本文引用地址:http://www.eepw.com.cn/article/201611/319326.htm

此處使用linux-2.6.22.6.tar.bz2

2. 解壓內核

tar -xjvf linux-2.6.22.6.tar.bz2

3. 打補丁

補丁文件linux-2.6.22.6_jz2440.patch和解壓後的文件夾linux-2.6.22.6處於同一目錄下

執行patch命令

patch -p1 < ../linux-2.6.22.6_jz2440.patch

4. 配置

a.直接執行make menuconfig直接一項一項的配置

b.使用默認配置,在上面修改:arm的配置在arch/arm/configs目錄下,在這裡,找到找到相似的配置文件,拷貝到內核代碼根目錄下,重命名為.config ,然後執行make menuconfig進行修改配置項即可。

c.使用廠家提供的配置文件:直接把廠家配置文件複製為.config,然後執行make menucinfig。

這裡使用c方法:config_ok為提供的配置文件

cp config_ok .config

5. 編譯

make(或make uImage)


相關焦點

  • Linux 內核學習:環境搭建和內核編譯
    git需要先配置用戶名和email: 6 環境搭建完成可以正式開始我們的linux內核學習之旅了。二、linux內核學習之二:編譯內核環境搭好後,馬上就進入到下一環節--編譯內核。linux的內核是整個系統最核心的部分,內核的功能基本上決定了系統的能力。
  • linux配置、編譯內核實用工具
    一條完整的規則描述了編譯一個目標的方法和依賴關係,是Makefile中最重要的部分。  ◆Makefile文件 描述如何生成一個或多個目標的文件。它列出目標依賴的各個文件,並提供正確編譯這些目標所需要的規則。  接下來以2.4.23的kbuild為例,簡要介紹一下內核的構建過程。首先,完整的內核構建過程由以下五種Makefile封裝。
  • 在21世紀該怎樣編譯Linux內核
    回到 20 世紀(甚至是 21 世紀初期),對於 Linux 用戶來說,在剛買到新的硬體後就需要下載最新的內核代碼並編譯安裝才能使用這是不可理喻的。而現在你也很難見到 Linux 用戶為了好玩而編譯內核或通過高度專業化定製的硬體的方式賺錢。現在,通常已經不需要再編譯 Linux 內核了。這裡列出了一些原因以及快速編譯內核的教程。
  • 嵌入式linux內核的編譯步驟
    嵌入式linux內核的編譯步驟 華清遠見 發表於 2020-06-19 09:30:24   編譯嵌入式Linux內核都是通過make的不同命令來實現的,它的執行配置文件是
  • Linux 系統內核的調試
    以試驗使用的kgdb補丁為例,linux內核的版本為linux-2.6.7,補丁版本為kgdb-2.2。在這個優化級別之下,編譯器要對內核中的某些代碼的執行順序進行改動,所以在調試時會出現程序運行與代碼順序不一致的情況。可以把Makefile中的-O2選項改為-O,但不可去掉-O,否則編譯會出問題。為了使編譯後的內核帶有調試信息,注意在編譯內核的時候需要加上-g選項。
  • Linux內核啟動-內核解壓縮
    本文引用地址:http://www.eepw.com.cn/article/148792.htm從內核的生成過程來看內核的連結主要有三步:第一步是把內核的原始碼編譯成.o文件,然後連結,這一步,連結的是arch/i386/kernel/head.S,生成的是vmlinux。
  • 一次搞定 Arm Linux 交叉編譯
    arm-linux-gnueabi-gcc 和 aarch64-linux-gnu-gcc 適用於 Arm Cortex-A 系列晶片,前者針對 32 位晶片,後者針對 64 位晶片,它使用的是 glibc 庫。可以用來編譯 u-boot、linux kernel 以及應用程式。
  • linux內核移植-移植2.6.35.4內核到s3c2440
    本來是想移植最新的內核2.6.39但是總是在編譯快完成的時候報錯,有人說是新的內核對arm平臺的支持不好,所以就降低了一下版本,這裡移植2.6.35.4內核一、準備工作1、下載 解壓內核從官網上下載linux-2.6.35的內核, ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ ,文件不大,約85M。
  • Linux 內核的測試和調試(6)
    Linux 內核補丁測試你試過自己寫內核補丁嗎?你的 .gitconfig 文件裡面需要配置好有效的 smtp 伺服器,詳細操作參考 git 的幫助文檔。這就是為什麼你可以把一個 rpm 包轉化成 deb 包後還能安裝並正常運行的秘密。靜態分析工具靜態分析之所以會被稱為「靜態分析」,是因為這些工具只分析代碼,並不執行它們。分析 Linux 內核代碼的靜態分析工具有很多,Sparse 是 Linus Torvalds 寫的專門用於檢查內核靜態類型的工具。它是一個語義檢查器,會為 C 語言的語義建立語義檢析樹,執行惰性類型評估。
  • Arm linux內核構建關於.config的問題
    首先下載內核的原始碼。然後tar -xvf 解壓。讓你手動去選擇配置選項)然後使用 make ARCH=arm CROSS_COMPILE=arm-linux-就可以開始編譯了。同樣也可以不用make ARCH=arm CROSS_COMPILE=arm-linux-這麼寫。
  • linux-3.18內核系統調用
    __NR_syscall_max] = &sys_ni_syscall將數組內容全部初始化為未實現(服務例程沒有實際內容,下邊介紹);然後包含syscalls_64.h的內容逐項初始化,這個文件預先不存在,是在內核編譯期間生成的(請看2.2)。
  • ARM-linux-gcc交叉編譯工具提示arm-linux-gcc can not find
    在Ubuntu12.04下安裝了arm-linux-gcc後,編譯Linux內核發現提示arm-linux-gcc can not find,查找了相關的網絡資料找到了答案
  • Linux下編譯時出現的錯誤及解決方法
    Linux下編譯時出現的錯誤及解決方法 (1)由於是Linux新手,所以現在才開始接觸線程編程,照著GUN/Linux編程指南中的一個例子輸入編譯,結果出現如下錯誤......
  • 「正點原子Linux連載」第三十七章Linux內核移植
    37.2.2 配置並編譯Linux內核和uboot一樣,在編譯Linux內核之前要先配置Linux內核。每個板子都有其對應的默認配置文件,這些默認配置文件保存在arch/arm/configs目錄中。所示:圖37.2.2.1 配置Linux內核配置完成以後就可以編譯了,使用如下命令編譯Linux內核:make-j16 //編譯Linux內核等待編譯完成,結果如圖37.2.2.2所示:圖37.2.2.2
  • Linux內核常用的動態調試手段
    linux內核中幾種常用的動態調試手段,也都是我常用的,都是在生產環境中直接使用,不需要藉助工具,依照我的經驗,去客戶生產環境中解決問題,很多都不會預裝perf、BPF工具,有的即使有perf這樣的工具,也因為工具性能影響客戶幾千億美金的正常業務,也會不讓你使用。
  • Linux內核學習:簡單的字符設備驅動
    init.h>#include <linux/module.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/uaccess.h>
  • 什麼Linux,Linux內核及Linux作業系統
    但是它有不能稱為一個真正的或者說可用於生產的作業系統,因為它只實現了對計算機資源的簡單管理(也就是實現了一個作業系統內核),卻沒有編譯工具等其它作業系統必備的工具集成到其中。對於Linux作業系統來說,其本身是一個整體,包括Linux內核、系統庫和系統程序,Linux內核是其最基礎的部分,它實現了對硬體資源的管理,並且提供了使用這些硬體資源的通用接口。自1991年發布LInux內核來,很多公司加入其中,在內核的基礎上構建了自己的作業系統版本,比如Redhat、Debian和Suse等等。
  • 一張圖看懂Linux內核中Percpu變量的實現
    但你知道嗎,不僅是在程式語言中,在linux內核中,也有一個類似的機制,用來實現類似的目的,它叫做percpu變量。percpu變量,顧名思義,就是對於同一個變量,每個cpu都有自己的一份,它可以被用來存放一些cpu獨有的數據,比如cpu的id,cpu上正在運行的線程等等,因該機制可以非常方便的解決一些特定問題,所以在內核編程中被廣泛使用。
  • 深入理解Linux內核鍊表
    在Linux內核中使用了大量的鍊表結構來組織數據,包括設備列表以及各種功能模塊中的數據組織。這些鍊表大多採用在[include/linux/list.h]實現的一個相當精彩的鍊表數據結構。本文的後繼部分就將通過示例詳細介紹這一數據結構的組織和使用。
  • 一張圖看懂linux內核中percpu變量的實現
    但你知道嗎,不僅是在程式語言中,在linux內核中,也有一個類似的機制,用來實現類似的目的,它叫做percpu變量。percpu變量,顧名思義,就是對於同一個變量,每個cpu都有自己的一份,它可以被用來存放一些cpu獨有的數據,比如cpu的id,cpu上正在運行的線程等等,因該機制可以非常方便的解決一些特定問題,所以在內核編程中被廣泛使用。