構建根檔案系統二之安裝使用glibc庫

2021-07-11 10:22:47 字數 1377 閱讀 6403

原址:

1、執行命令:tar -jxvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 解壓

可以看到解壓到了gcc-3.4.5-glibc-2.3.6資料夾,而我們需要的glibc庫的位置存放在gcc-3.4.5-glibc-2.3.6/arm-linux/lib 資料夾下

2、執行命令:ls gcc-3.4.5-glibc-2.3.6/arm-linux/lib 可以看到該目錄下的檔案。其實這個目錄下的檔案並非都屬於glibc庫,比如crt1.o、libstdc++.a等檔案是gcc工具本身生成的。裡面的目錄、檔案可以分為8類。

①  載入器ld-2.3.6.so、ld-linux.so.2。

動態程式啟動前,它們都被用來載入動態庫。

②  目標檔案(.o)。

比如crt1.o、crti.o、crtn.o、mctr1.o、scrt1.o等,在生成應用程式時,這些檔案像一般的目標檔案一樣被鏈結。

③  靜態庫檔案(.a)。

比如靜態數學庫libm.a、靜態c++庫libstdc++.a等,編譯靜態程式時會連線它們

④  動態庫檔案(.so、,so.[0-9]*)。

比如動態數學庫libm.so、動態c++庫libstdc++.so等,它們可能是乙個鏈結檔案。編譯動態庫時會用到這些檔案,但是不會連線它們,執行時才連線。

⑤  libtool庫檔案(.la)。

在連線庫檔案時,這些檔案會被用到,比如它們列出了當前庫檔案所依賴的其他庫檔案。程式執行時無需這些檔案。

⑥  gconv目錄。

裡面是有頭字元的集的動態庫,比如iso8859-1.so、gb18010.so等。

⑦  ldscripts目錄。

裡面是各種連線指令碼,在編譯應用程式時,它們被用於制定程式的執行位址、各段的位置等。

⑧  其他目錄及檔案。

3、廢話那麼多,現在安裝glibc庫,在上一節我們編譯安裝busybox時使用的是動態連線,這裡在開發板上只需要載入器和動態庫,假設要建立的根檔案系統目錄為/home/song/nfs_root/fs_mini,操作如下:

執行命令:mkdir -p /home/song/nfs_root/fs_mini/lib 

執行命令:cp /yourpath/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/*.so*  /yourpath/nfs_root/fs_mini/lib/   

至此,glibc庫已經安裝完成。其實,上面複製的庫檔案不是每個檔案都會被用到,可以根據應用程式對庫的依賴關係保留需要用到的。通過ldd命令可以檢視乙個應用程式會用到哪些庫。

下一節正在寫.....  

構建根檔案系統

wget make defconfig make cross compile arm linux gnueabi make install編譯完install後會預設安裝在busybox原始碼目錄下 install目錄內,但是此檔案系統並不完整,只有四個目錄 root ls bin linuxrc ...

構建根檔案系統

wget make defconfig make cross compile arm linux gnueabi make install編譯完install後會預設安裝在busybox原始碼目錄下 install目錄內,但是此檔案系統並不完整,只有四個目錄 root ls bin linuxrc ...

構建根檔案系統

tar xjf busybox 1.7.0.tar.bz2 cd busybox 1.7.0 make menuconfig 編譯busybox 1.7.0出現如下錯誤 busybox 1.7.0 make menuconfig makefile 405 mixed implicit and nor...