linux文件系统的lib,文件系统 lib

制作根文件系统时,当把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命令,这样可保留完整的符号链接信息。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值