`
king_tt
  • 浏览: 2259623 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

构建根文件系统二之安装使用glibc库

 
阅读更多

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

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命令可以查看一个应用程序会用到哪些库。

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

分享到:
评论

相关推荐

    ARM_LINUX构建最小根文件系统

    接着,文档进入了构建根文件系统的主要内容,分别介绍了编译Busybox、移植glibc库以及构建根文件系统目录的详细步骤。 在编译Busybox的步骤中,首先需要下载Busybox的源码包,文档中提供了下载地址。解压源码之后,...

    Linux根文件系统构建说明

    构建根文件系统的步骤通常包括选择合适的文件系统类型(如ext2、ext3、ext4或FAT),使用 Busybox 构建基本工具集,添加必要的库和配置文件,以及生成系统映像。在完成根文件系统构建后,还需要将其烧写到目标硬件的...

    构建基本嵌入式Linux根文件系统详细步骤

    其次,配置交叉编译工具链是构建根文件系统的基石。交叉编译工具链允许我们在宿主机(通常是Linux PC)上为目标硬件(如ARM架构的嵌入式板子)编译软件。这通常包括GCC编译器、binutils、Glibc库等。确保工具链与...

    制作最小根文件系统

    为了使根文件系统能够正常运行,还需要移植一个标准的C库,通常是Glibc库。在EABI-4.3.3编译器中提取库文件,可以按照以下步骤操作: 1. 进入到编译器的libc目录:`cd /usr/opt/EmbedSky/4.3.3/arm-none-linux-...

    jffs2根文件系统

    - 选择动态链接方式构建Busybox,在构建根文件系统时需要在`/lib`目录下放置glibc库文件。 - 在“Build options” -> “Build BusyBox as a static binary (no shared libs)”中取消勾选。 3. **Archival ...

    构建yaffs文件系统时错误

    3. **检查根文件系统**:确认根文件系统上存在正确的init程序,通常是/sbin/init或/etc/init。 ### 问题2: can't run '/etc/init.d/rcS' 此错误表明系统无法运行初始化脚本/etc/init.d/rcS,可能是因为该文件或其...

    Linux嵌入式系统根文件系统的选择与制作.pdf

    - 使用工具如 BusyBox 和 Buildroot 创建最小化根文件系统,这些工具可以帮助集成必要的命令、库和配置文件。 - 利用脚本语言(如bash)自动化构建过程,提高效率并减少错误。 - 对于特定硬件,可能需要进行文件...

    根文件系统实验(含相关文件)

    需要确保系统库(如glibc)已包含在内,或者使用静态链接编译hello,以使其能在定制的根文件系统中运行。将编译好的hello二进制文件也放入根文件系统。 6. **调整权限和所有权**:根据需要设置文件和目录的权限及...

    嵌入式Linux系统的移植及其根文件系统的实现.pdf

    交叉工具链软件包`cross-2.95.3.tar.bz2`包含了多种工具,如二进制文件处理工具Binutils、arm-linux交叉编译器GNU gcc、链接运行库glibc等,这些工具可以被组合成方便的命令行形式,便于开发者使用。 #### 3. Linux...

    嵌入式Linux系统的移植及其根文件系统的实现

    接下来,我们将详细介绍如何构建根文件系统,并使用NFS文件系统进行基本应用程序的开发。 ### 四、根文件系统的实现 根文件系统是任何Linux系统的基础,它包含了系统启动所必需的基本文件和目录结构。在嵌入式...

    Glibc Binutils GCC 安装指南

    根据Linux文件系统标准的要求,基本库必须位于`/lib`目录,并且与根目录在同一个分区上。如果指定`--prefix=/usr`,那么基本库部分将自动安装到`/lib`目录下,非基本库部分则会安装到`/usr/lib`目录中,同时使用`/...

    linux根文件系统制作

    通过理解Linux根文件系统的组织结构和初始化过程,开发者可以更有效地构建和优化针对特定硬件平台的嵌入式Linux系统,加速开发流程,提高系统性能和稳定性。遵循文件系统科学分类标准(FHS)可以使文件系统布局标准...

    制作linux根文件系统

    制作Linux根文件系统是一项复杂但至关重要的任务,它不仅涉及到文件系统的组织结构,还包括初始化RAM盘的使用、必要的库和应用程序的选择等。通过深入了解这些知识点,开发者能够更好地理解和定制适合特定应用需求的...

    制作根文件系统

    制作根文件系统是Linux系统构建过程中的重要环节,它包含了操作系统启动时所需的最基本文件和配置。根文件系统通常包括执行基本系统服务、初始化脚本、设备节点以及必要的库。以下是对根文件系统制作过程的详细解释...

    构建嵌入式linux系统.doc

    5. 构建根文件系统,包括安装基本命令集、数据库、网络服务等组件。 6. 熟悉不同的文件系统格式,如tarball和cramfs,以及如何将根文件系统打包成这些格式。 这个过程需要扎实的Linux系统知识、编译原理理解以及...

    4412的跟文件系统

    在实际开发过程中,开发者通常会使用交叉编译环境在主机系统上构建这些库和应用,然后将编译后的二进制文件和必要的依赖项复制到4412开发板的根文件系统中。通过调试工具如ssh或串口连接,可以远程调试和测试应用...

    linux最小根文件系统的制作.ppt

    在构建最小根文件系统时,通常需要包含标准C库(如glibc),因为很多命令和系统调用依赖于它。构建时,必须确保库文件与内核版本兼容,以避免运行时错误。 6. **构建过程**: 构建最小根文件系统通常包括选择需要...

Global site tag (gtag.js) - Google Analytics