<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 操作系統 > Linux教程 > 動態編譯busybox和編譯并安裝busybox

        動態編譯busybox和編譯并安裝busybox

        時間: 若木635 分享

        動態編譯busybox和編譯并安裝busybox

          動態編譯busybox

          進入Build Options時,不要選擇Build Busybox as a static binary,其他所有操作步驟跟靜態編譯一樣,你會發現這樣建立的文件系統無法啟動,終端上打印出如下消息:

          Kernel panic-not synving:No init found. Try passing init=option to kernel.

          為什么會出現這種問題呢?這就得回到兩種編譯方式的特點上來。靜態編譯時是將所用到的庫文件一起編譯了進去,而動態編譯時是在需要時才調用相應的庫。我們選擇動態編譯后,沒有添加任何庫文件就運行,顯然是會出錯的。那么如何查看busybox可執行文件里使用的庫呢。ldd和Readelf都可以顯示。

          ldd

          下面是查看cat的庫的結果,linux-gate.so.1是與內核通信的,不用管。所有程序其實都是通過ld-linux.so.2來找庫文件的,它就是一個中介,必不可少。

          #ldd /bin/cat

          linux-gate.so.1 => (0x00bfe000)

          libc.so.6 => /lib/libc.so.6 (0x00a4a000)

          /lib/ld-linux.so.2 (0x00a28000)

          readelf

          下面是編譯的ARM上的系統的庫文件查找。

          # arm-uclibc-linux-readelf -d busybox

          Dynamic section at offset 0xca014 contains 18 entries:

          標記 類型 名稱/值

          0x00000001 (NEEDED) 共享庫:[libm.so.0]

          0x00000001 (NEEDED) 共享庫:[libc.so.0]

          0x0000000c (INIT) 0xbe24

          0x0000000d (FINI) 0xb2054

          0x00000004 (HASH) 0x80e8

          0x00000005 (STRTAB) 0xa500

          0x00000006 (SYMTAB) 0x8b70

          0x0000000a (STRSZ) 3259 (bytes)

          0x0000000b (SYMENT) 16 (bytes)

          0x00000015 (DEBUG) 0x0

          0x00000003 (PLTGOT) 0xda0cc

          0x00000002 (PLTRELSZ) 3040 (bytes)

          0x00000014 (PLTREL) REL

          0x00000017 (JMPREL) 0xb244

          0x00000011 (REL) 0xb1bc

          0x00000012 (RELSZ) 136 (bytes)

          0x00000013 (RELENT) 8 (bytes)

          0x00000000 (NULL) 0x0

          從上面的結果中,我們可以看到,busybox這個程序使用到了libm.so.0和libc.so.0兩個庫文件,實際上這是2個符號鏈接,分別指向libc-0.9.28.so和libuClibc-0.9.28.so。

          將以上四個文件分別拷貝到lib目錄下。按理說,這樣應該就可以了,但是仍然無法正常運行。顯示的錯誤信息和剛剛沒加庫之前一樣。可能的原因有2種:一是庫文件沒有添加全,二是庫文件沒有正確被加載。

          根據readelf顯示的結果應該不是第一種原因。那么到底為什么沒被正確加載呢?原來庫文件的加載,還需要一個共享庫加載器。找到對應的文件ld-uClibc-0.9.28.so和ld-uClibc.so.0添加到lib目錄下后。運行正常。

          編譯并安裝busybox

          #make

          #make install

          用 make 命令編譯busybox軟件。

          用 make CONFIG_PREFIX=<安裝目錄> install 命令安裝。

          如果在命令行中省略CONFIG_PREFIX變量的賦值,則會安裝缺省值 ./_install 目錄下。CONFIG_PREFIX可以在make menuconfig的配置界面中修改。

          編譯好后在busybox目錄下生成子目錄_install,里面的內容:

          drwxr-xr-x 2 root root 4096 11月 24 15:28 bin

          rwxrwxrwx 1 root root 11 11月 24 15:28 linuxrc -> bin/busybox

          drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin

          Ø bin包含用戶工具,其中,busybox可執行文件就在這個目錄下,該目錄下其他所有文件都是指向busybox的符號鏈接

          Ø sbin目錄包含操作系統工具,同樣也指向busybox。

          Ø linuxrc是一個鏈接文件,指向busybox。

          將文件復制到你的鏡像根文件夾中。

        75372 主站蜘蛛池模板: 免费人成视频在线视频电影 | 乱人伦人妻精品一区二区| 亚洲一区二区三区四区三级视频| 国产精品久久久天天影视香蕉| 国产成人8x视频一区二区| 午夜免费福利小电影| 精品国产免费一区二区三区香蕉| 国产AV福利第一精品| 久久夜色精品国产亚av| 一面膜上边一面膜下边视频| 人人妻久久人人澡人人爽人人精品| 国产理论精品| 亚洲一级成人影院在线观看| 亚洲AV综合色区无码一区| 日韩精品中文字幕综合| 国产怡春院无码一区二区| 婷婷综合在线观看丁香| 日韩一区二区三区日韩精品| 高级艳妇交换俱乐部小说| 成人综合人人爽一区二区| 国产av一区二区麻豆熟女| 中文字幕人妻有码久视频| 丰满少妇内射一区| 国产成人亚洲欧美二区综合| 国产精品成人高潮av| 亚洲一区二区日韩综合久久 | 啊轻点灬大JI巴太粗太长了在线| 国产视频一区二区在线看| 一区二区三区自拍偷拍视频| 最新亚洲av日韩av二区| 55大东北熟女啪啪嗷嗷叫| 国产高潮刺激叫喊视频| 精品国产福利一区二区| 成人国产精品中文字幕| 91热国内精品永久免费观看| 2021久久最新国产精品| 亚洲综合一区二区三区在线 | 久久精品人人做人人爽97| 无码人妻aⅴ一区二区三区蜜桃| 日本精品极品视频在线| 国产一级特黄高清大片一|