Calvin's Tech Space

          成于堅(jiān)忍,毀于浮躁

             :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
          我們可以通過兩種方式進(jìn)入Android的console:

          1. 直接執(zhí)行命令emulator -shell;

          2. 在啟動emulator后,通過命令adb shell進(jìn)入。

          之后我們就可以使用一些linux下常用的命令了,如ls,cat等。然而Android自帶的toolbox(位于/system/bin中)也太簡略了點(diǎn),有些命令如find,Android并不支持或者支持得不好。下面將介紹如何為Android加入busybox工具,通過編譯得到一個可以在Android里面運(yùn)行的busybox工具,我們就可以使用眾多常見的linux命令了,如find,touch等。

          步驟如下:

          1. 首先去busybox主頁 下載最新版本的busybox源代碼.

          2. 下載交叉編譯工具: GNU Toolchain for ARM Processors

              下載地址:http://www.codesourcery.com/gnu_toolchains/arm/download.html

              其中第一項(xiàng)選擇ARM EABI或ARM GNU/Linux,第二項(xiàng)選擇IA32 GNU/Linux TAR即可。

              最后得到一個arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2文件

              將壓縮包解壓到linux下某個目錄, 并設(shè)置好環(huán)境變量, 使之能找到前綴為"arm-none-linux-gnueabi-"的交叉編譯工具.

          3. 進(jìn)入busybox源碼目錄.

               先執(zhí)行make menuconfig命令對編譯過程進(jìn)行配置.  過程如下:

               Busybox Settings -> Build Options ->

               [*] Build BusyBox as a static binary (no shared libs) 這個要選上,因上這樣子編譯出來的busyBox才是可以獨(dú)立運(yùn)行的。
               (/home/jo/tool/arm-2008q3/bin/arm-none-linux-gnueabi-) Cross Compiler prefex 這是交叉編譯器的"路徑+前綴",要根據(jù)具體的情況來設(shè)置。
               Busybox Settings -> Installation Options->
               [*] Don’t use /usr        這樣子編譯出來的busybox才不會安裝到你主機(jī)的/usr目錄下。一定要選上。

          4 執(zhí)行make編譯源碼.  如果編譯過程中產(chǎn)生無法找到頭文件的錯誤, 可指定交叉編譯器用到的頭文件所在路徑. 如

             $make -I./home/jo/tool/arm-2008q3/arm-none-linux-gnueabi/libc/usr/include/

          5 編譯成功后將得到一個名為busybox的可執(zhí)行文件.

          6 在Android的console下建立目錄/data/busybox, 并使用下面的命令將文件busybox復(fù)制該目錄中:

             adb push busybox /data/busybox

          7 從Android的console進(jìn)入/data/busybox目錄, 為可執(zhí)行文件busybox加上可執(zhí)行屬性: chmod +x busybox

          8 這時我們就可以使用busybox工具了, 如果希望在任何目錄下都可以直接使用bosybox,則需要將路徑/data/busybox export到path環(huán)境變量中:

             export PATH=$PATH:/data/busybox

          9 設(shè)置環(huán)境變量之后, 在命令行輸入busybox, 即可看到其用法, 如:

             在當(dāng)前目錄及其子目錄中查找名為init.rc的文件可使用以下命令:

             $busybox find . -name init.rc

          10 安裝busybox。

             通過執(zhí)行./busybox --install -s 我們會看到出現(xiàn)一些錯誤, 原因是因?yàn)锳ndroid系統(tǒng)的根目錄和/sbin目錄是只讀的.  因此我們無法把一些常用命令安裝到/bin目錄下, 也不能修改/init.rc文件來設(shè)置PATH環(huán)境變量.

             對于如何執(zhí)行命令busybox --install -s 的默認(rèn)安裝路徑, 這里我還不太清楚, 或許跟Makefile和編譯busybox的相關(guān)設(shè)置有關(guān).

             盡管我們不可以在Android里面通過執(zhí)行busybox --install -s 命令來安裝常用命令, 我們卻可以通過另外一個方法來把常用命令安裝到Android里面.  

             方法很簡單, 可以先在外面的linux系統(tǒng)中執(zhí)行make install命令把相關(guān)的命令提取出來. 然后再通過命令adb push ./_install/bin /data/busybox/bin 把這些常用命令復(fù)制進(jìn)Android系統(tǒng)中. 注意: make install安裝命令的所在路徑可通過執(zhí)行make menuconfig進(jìn)行設(shè)置, 默認(rèn)為./_install目錄下面.

             這樣,我們就不用每次使用busybox提供的一個命令時, 都要在前面加上busybox了.

          11 修改/init.rc文件設(shè)置環(huán)境變量.

               請參考帖子: 對Android啟動過程的進(jìn)一步研究

               要提醒的是, 修改PATH環(huán)境變量的時候, 應(yīng)該把busybox常用命令的路徑"/data/busybox/bin"放在Android的常用命令路徑"/system/bin"的前面, 否則, 先查找得到的將不是busybox的命令,  可以這樣設(shè)置:

               export PATH /data/busybox/bin:/sbin:/system/sbin:/system/bin:/system/xbin

          轉(zhuǎn)自http://blog.csdn.net/liaoshengjiong/archive/2009/03/05/3957725.aspx
          posted on 2010-03-21 01:06 calvin 閱讀(2022) 評論(0)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 大港区| 保德县| 潍坊市| 横峰县| 吉林市| 武定县| 响水县| 台州市| 崇阳县| 济宁市| 多伦县| 德惠市| 宝丰县| 长汀县| 五大连池市| 和龙市| 湖南省| 广汉市| 夏邑县| 天镇县| 达日县| 新兴县| 东乡县| 广灵县| 天柱县| 营山县| 宁城县| 康乐县| 沂源县| 白河县| 泰州市| 博罗县| 孙吴县| 武穴市| 沾益县| 乌兰县| 贵德县| 秦皇岛市| 萍乡市| 宁阳县| 扶余县|