提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
[一、向根文件系统添加 lib 库](#一、向根文件系统添加 lib 库)
[1.1、向 rootfs 的"/lib"目录添加库文件](#1.1、向 rootfs 的“/lib”目录添加库文件)
[1.2、向 rootfs 的"usr/lib"目录添加库文件](#1.2、向 rootfs 的“usr/lib”目录添加库文件)
前言
上一期博客我们完成了修改BusyBox软件源码,并进行了配置,最后完成了编译。
但是此时的根文件系统还不能使用,还需要一些其他的文件,这一期我们将完善此文件。
一、向根文件系统添加lib库
1.1、向rootfs的"/lib"目录添加库文件
Linux 中的应用程序一般都是需要动态库的,所以我们需要向根文件系统中添加动态库。在 rootfs 中创建一个名为"lib"的文件夹,命令如下:
mkdir lib
lib 文件夹创建好了,库文件从哪里来呢?lib 库文件从交叉编译器中获取,前面我们搭建交叉编译环境的时候将交叉编译器存放到了"/usr/local/arm/"目录中,交叉编译器里面有很多的库文件,但每个库文件具体做什么的,我们初学者是不了解的,所以在此我是准备把所有的库文件都放到我们的根文件系统中。
注意:这样的根文件系统肯定很大,有经验的大佬可以裁剪着使用。
进入如下路径对应的目录:
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib
此目录下有很多的*so*(*是通配符)和.a 文件,这些就是库文件,将此目录下所有的*so*和.a文件都拷贝到 rootfs/lib 目录中,拷贝命令如下:
cp *so* *.a /home/duan/linux/nfs/rootfs/lib/ -d
后面的"-d"表示拷贝符号链接,这里有个比较特殊的库文件:ld-linux-armhf.so.3,此库文件也是个符号链接,相当于 Windows 下的快捷方式。会链接到库 ld-2.19-2014.08-1-git.so 上,输入命令"ls ld-linux-armhf.so.3 -l"查看此文件详细信息。 如下图所示:

图中可以看出,ld-linux-armhf.so.3 后面有个"->",表示其是个软连接文件(相当于一个快捷方式),但是,ld-linux-armhf.so.3 不能作为符号链接,否则的话在根文件系统中执行程序无法执行,在此我们要把其变为本尊,咱们可以重新复制 ld-linux-armhf.so.3,不复制软链接即可。
先将rootfs/lib 中的 ld-linux-armhf.so.3 文件删除掉,命令如下:
rm ld-linux-armhf.so.3
再重新拷贝,命令如下:
cp ld-linux-armhf.so.3 /home/duan/linux/nfs/rootfs/lib/

拷贝完可以到rootfs/lib目录下查看

此时就不是软链接了,而是库文件了。
在此进入下面这个目录
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib
此目录下也要很多的*so*和.a 文件
cp *so* *.a /home/duan/linux/nfs/rootfs/lib/ -d
完成以后的rootfs/lib的目录如下

1.2**、向rootfs的"usr/lib"目录添加库文件**
在 rootfs 的 usr 目录下创建一个名为 lib 的目录,将如下目录中的库文件拷贝到 rootfs/usr/lib 目录下:
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/
usr/lib
l将此目录下的 so 和 .a 库文件都拷贝到 rootfs/usr/lib 目录中,命令如下:
cp *so* *.a /home/duan/linux/nfs/rootfs/usr/lib/ -d
完成以后的 rootfs/usr/lib 目录如下图 所示:

至此,根文件系统的库文件就全部添加好了。
二、创建其他文件夹
在根文件系统中创建其他文件夹,如 dev、proc、mnt、sys、tmp 和 root 等,创建完成以后如图:

目前初步的根文件系统基本已经准备好了。
总结
初步完成根文件系统的构建,下一期我们会进行测试。