在Linux下爲嵌入式Linux內核編譯busybox

 筆者所用的是一塊ARM9 Atmel 9200的開發板,Linux內核爲2.4.27, 交叉編譯器爲2.95.3,編譯環境爲RedHat9 Linux下。

1、從http://www.busybox.net/downloads下載到busybox,筆者下載的爲busybox1.1.3,下載後解壓到一個目錄下,如 /tmp 目錄下;

2、進入解壓後的目錄,輸入make menuconfig 進行編譯配置,基本的配置如下:
Busybox Settings >                                                              
          General Configuration >                                                
                     [*] Support for devfs                                       
          Build Options >                                                        
                     [*] Build BusyBox as a static binary (no shared libs)       
                           /* 將busybox編譯爲靜態連接,少了啓動時找動態庫的麻煩 */     
                     [*] Do you want to build BusyBox with a Cross Compiler?     
                       (/usr/local/arm/3.3.2/bin/armlinux)                       
                       Cross Compiler prefix                                     
                          /* 指定交叉編譯工具路徑 */                                
          Init Utilities >                                                       
                    [*] init                                                     
                    [*] Support reading an inittab file                          
                         /* 支持init讀取/etc/inittab配置文件,一定要選上 */          
          Shells >                                                               
                    Choose your default shell (ash) >                            
                        /* (X) ash 選中ash,這樣生成的時候纔會生成bin/sh文件          
                         * 看看我們前頭的linuxrc腳本的頭一句:                       
                         * #!/bin/sh 是由bin/sh來解釋執行的*/                       
                    [*] ash                                                      
          Coreutils >                                                            
                    [*] cp                                                       
                    [*] cat                                                      
                    [*] ls                                                       
                    [*] mkdir                                                    
                    [*] echo (basic SuSv3 version taking no options)             
                    [*] env                                                      
                    [*] mv                                                       
                    [*] pwd                                                      
                    [*] rm                                                       
                    [*] touch                                                    
         Editors >                                                               
                    [*] vi                                                       
         Linux System Utilities >                                                
                    [*] mount                                                     
                    [*] umount                                                   
                    [*] Support loopback mounts                                  
                    [*] Support for the old /etc/mtab file                       
         Networking Utilities >                                                  
                    [*] inetd                                                    
                       /* 支持inetd超級服務器inetd的配置文件爲/etc/inetd.conf文件,   
                        * "在該部分的4: 相關配置文件的創建"一節會有說明*/             

3、編譯並安裝Busybox
[arm@localhost busybox1.1.3]$make TARGET_ARCH=arm CROSS=/usr/local/arm/2.85.3/bin/arm-linux- PREFIX=/root/arm_9200/rdmnt/ all install

CROSS 爲交叉編譯器的路徑。
PREFIX指明安裝路徑:就是我們根文件系統所在路徑。
* 這裏需要注意一點的是,只要install busybox,我們根文件系統下先前建好的linuxrc就會被覆蓋爲一同名二進
制文件。所以要事先備份我們自己的linuxrc,在安裝完busybox後,將linuxrc複製回去就好。
* 如果在編譯的過程中出現錯誤,這可能是某些支持問題,可以在配置的時候把相關的選項去掉試試。
* 如果出現找不到內核版本號的編譯錯誤,可以有兩種方法解決:(1)把你的內核源碼中的version.h文件拷貝到交叉編譯器的包含文件的linux目錄下(該方法筆者試驗成功);(2)該方法來源於論壇上面的一位朋友,做法爲刪掉#include <linux/version.h>換成#define UTS_RELEASE "2.4.27"  #define LINUX_VERSION_CODE 132123

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章