1. 程式人生 > >嵌入式Linux-根檔案系統1_如何移植busybox和動態共享庫

嵌入式Linux-根檔案系統1_如何移植busybox和動態共享庫

一.busybox

編譯/安裝busybox,生成/bin/sbin/usr/bin/usr/sbin目錄 這些目錄下儲存的主要是常用命令的二進位制檔案。有了busyb,就不需要自己編寫這幾百個常用命令的源程式,而是直接呼叫。

         下載BUSYBOX的原始碼包:http://busybox.net/downloads/

  1. tar xjvf busybox-1.7.0.tar.bz2解包
  2. 修改Makefile檔案
  3. 175ARCH            ?= arm

         176 CROSS_COMPILE   ?= arm-linux-

    4.make menuconfig配置busybox


 配置和編譯busybox:

    deconfig:預設配置

    allnoconfig:禁用所有的應用程式(空)

    alllyesconfig:啟用所有的應用程式(完整)

    config:基於文字的 配置

    menuconfig:基於選單配置

    clean:清除原始碼樹

    distclean:徹底清除原始碼樹

通常的 流程:

    配置 :make menuconfig

    編譯 :make ARCH=arm  CROSS_COMPILE=arm-xilinx-linux-gnueabi-

    安裝 :make ARCH=arm  CROSS_COMPILE=arm-xilinx-linux-gnueabi- install

安裝之後預設生成_install 目錄,裡面有bin, sbin,usr/bin, usr/sbin 四個目錄 。目錄資料夾下是busybox的符合連線,bin下是可執行檔案 。其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟連結,而busybox本身的大小不到800K將這四個資料夾拷貝出來:

    cd  _install

   cp -a  *  /zw/work/rootfs              


busybox配置主要分兩部分。

第一部分是Busybox Settings,主要編譯和安裝busybox的一些選項。這裡主要需要配置:

1)、Build Options -- Build BusyBox as astatic binary (no shared libs),表示編譯busybox時,是否靜態連結C庫。我們選擇動態連結C庫。

2)、Installation Options -- Applets links(as soft-links) -- (X) as soft-links,表示安裝busybox時,將各個命令安裝為指向busybox的軟連結還是硬連結。我們選擇軟連結。

3)、Installation Options --(/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安裝位置。我們選擇/work/nfs_root/fs_mini3

4Busybox Library Tuning。保留Command line editing以支援命令列編輯;保留History size以支援記憶歷史命令;選中Tab completionUsername completion以支援命令自動補全

第二部分是Applets,他將busybox的支援的幾百個命令分門別類。我們只要在各個門類下選擇想要的命令即可。這裡我們基本保持預設設定。

1)選中Networking Utilities -- httpd下的Enable -u <user> option,以啟用http伺服器的功能allows the server to run as a specificuser


二。選擇必要的動態共享庫          

    如果出現error while loading shared libraries,表示動態聯結器找不到動態共享庫。

聯結器的搜尋目錄順序是 :

1.Makefile中 對GCC連線加入引數 “-Wl,-rpath”指定 動態庫搜尋路徑

2.環境變數 LD_LIBRARY_PATH指定動態庫搜尋路徑

3.預設動態庫搜尋路徑 /lib

4. 預設動態庫搜尋路徑 /usr/lib

嵌入式系統中 ,一般把所需要的庫統一放到/lib目錄中 ,