根文件系统制作的lib库必须添加的文件

来源:互联网 发布:caffe可视化 编辑:程序博客网 时间:2024/06/05 10:55

************本文转自http://blog.csdn.net/zhaole20094463/article/details/7002049***************************************


 制作根文件系统时,当把busybox编译的四个文件拷进了文件夹里,

必备的文件目录页建立了,初始化目录,设备文件也建立了

这时候就需要添加库文件了。

这里就有一个值得注意的地方了,如果你的busybox是静态编译的,就是不需要动态链接库的话,就不需要

添加lib库了。

设置静态编译方式

    Busybox Settings ---> Build Options ---> [*] Build BusyBox as a static binary (no shared libs)

busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作。

如果是以动态链接的方式就必须添加相应的库文件。

 

#cd /home/su/rootfs/lib

 

这里有点麻烦,我怎么知道需要什么库文件的支持呢?

 

最简单的办法是把arm-linux-gcc 3.4.5下的整个lib库拷进来,简单省事。但是这么做存在一个问题,做出的根文件系统非常大。

 库文件是由上到下兼容的,所以可以使用一起交叉编译器的版本的库,或者是在网上下载,arm-920T-eabi.tgz选取里面的库文件

另一个办法是:

 

#cd /home/su/rootfs/bin

 

#arm-linux-readelf busybox | grep shared

 

这样就可以显示出系统运行起来需要什么库文件,再把相应的库文件拷到/home/su/rootfs/lib下。一般而言,系统库用到两个:动态链接器ld-linux.so和c函数库Glibc,Glibc包括:

 

ld-linux:动态链接库,必需

 

libc: 标准c函数库,必需

 

libm: 数学库,一般需要

 

libdl: 用于动态装载共享库,较少用到

 

libcrypt: 加密附加库,需要认证的程序用到,较少用

 

libpthread: POSIX线程库,一般需要

 

如果需要某个函数库,我们可以将这些库和对应的符号链接拷到目标根文件系统的/lib目录下。简单起见,应该使用-d选项或-a选项调用cp命令,这样可保留完整的符号链接信息。