zoukankan      html  css  js  c++  java
  • 一步一步制作yaffs/yaffs2根文件系统(三)---使用glibc库构造 /lib

                                开发环境:Ubuntu 12.04

                                开发板:mini2440  256M NandFlash   64M SDRAM

                                glibc库:点此下载

                                 交叉编译器:arm-linux-gcc 4.4.3 点此可下载

                                 BusyBox版本:busybox-1.13.3  点此可下载

                                yaffs制作工具:mkyaffsimage

                                yaffs2制作工具:mkyaffs2image(适合64M)、mkyaffs2image-128(适合128M以上)

    紧接着上一节:http://blog.csdn.net/mybelief321/article/details/10001927

    在我们制作交叉编译工具链arm-linux-gcc时,已经生成了glibc库,可以直接使用它来构建根文件系统,本文使用的时光盘里自带的压缩库,由下图可以看出,这是arm-linux-gcc3.4.5版本的glibc库,而我的arm-linux-gcc是4.4.3的,可不可以使用呢?答案是可以的!

    15、将下载的arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 放在和rootfs同一个文件夹,如下


    16、执行命令:tar -jxf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 解压此库


    我们需要的glibc库的位置存放在gcc-3.4.5-glibc-2.3.6/arm-linux/lib 文件夹下。

    执行命令: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目录。

       里面是各种连接脚本,在编译应用程序时,它们被用于制定程序的运行地址、各段的位置等。

        ⑧  其他目录及文件。

    17、现在安装glibc库,在上一节我们编译安装busybox时使用的是动态连接,这里在开发板上只需要加载器和动态库。

    执行命令:mkdir -p rootfs/lib  在rootfs中创建lib文件夹,用来存放咱们的加载器和动态库

    执行命令:cp gcc-3.4.5-glibc-2.3.6/arm-linux/lib/*.so* rootfs/lib/  安装glibc库到咱们的文件夹下


    18、执行命令:cd rootfs  进入到rootfs文件夹,此时可以看到在lib文件夹已经有咱们需要的库了。


    至此,glibc库已经安装完成,也已经在根文件目录下创建了/lib目录。其实,上面复制的库文件不是每个文件都会被用到,可以根据应用程序对库的依赖关系保留需要用到的。通过ldd命令可以查看一个应用程序会用到哪些库。

    下一节 :http://blog.csdn.net/mybelief321/article/details/10007719

  • 相关阅读:
    Codevs 2296 仪仗队 2008年省队选拔赛山东
    Codevs 1535 封锁阳光大学
    Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
    Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
    Codevs 1684 垃圾陷阱
    洛谷 P1108 低价购买
    Vijos P1325桐桐的糖果计划
    Codevs 3289 花匠 2013年NOIP全国联赛提高组
    Codevs 2611 观光旅游(floyed最小环)
    C语言基础之彩色版C语言(内含linux)
  • 原文地址:https://www.cnblogs.com/james1207/p/3265420.html
Copyright © 2011-2022 走看看