2010年7月17日 星期六

交叉編譯Busybox到Android

一般嵌入式系統都很常用Busybox,但是Android卻使用他們自己做的"toolbox"。裡面很多指令與我們熟悉的busybox不太相同,因此我們將它移植到Android上。
1. 下載busybox,我在這裡使用busybox1.16.1 (老師網站上的)

2. 執行make menuconfig 把以下選項勾選:
 Busybox Settings  --->  Build Options  ---> Build BusyBox as a static binary (no shared libs)
 這是為了讓busybox在跑的時候不要參照動態函式庫

再來輸入Cross Compiler prefix,因為我們要交叉編譯,要指定toolchain的資料夾
ex. (/usr/local/arm/4.3.1-eabi-armv6/usr/bin/arm-linux-) Cross Compiler prefix

再勾選 Busybox Settings  --->Installation Options  ---> Don't use /usr
這樣busybox在安裝的時候就不會產生(裝在)/usr (應該也是可以不用勾,因為可以自己設定安裝路徑)

最後看自己要不要修改(./_install) BusyBox installation prefix 這裡可以指定安裝到Android的system資料夾中,接著就只要把system打包成img檔,再燒進去就好了

如果不要,那就移到_install資料夾,把裡面的東西cp到system資料夾,也可以 (總之是要把原來Android內的執行檔蓋掉)

重燒之後開機,就可以用busybox的命令了!



後記

1. 為什麼要裝busybox主要原因是想用ifconfig,雖然toolbox也有但好像不一樣。要注意的是原來toolbox的ifconfig是在/system/bin內,但busybox的是在sbin裡,雖然Android內PATH的設定是/system/sbin優先於/system/bin,不過反正也不會用到,我就把toolbox的刪掉了

2. 第一次編得時候我完全沒有修改config file,直接用預設的編了,結果編了很多在嵌入式系統上用不到的程式,造成空間浪費。所以還是要去設定一下啊....把用不到的取消掉

沒有留言:

張貼留言