常州外贸网站设计,二级建造师建设云网站,wordpress标签别名转换,可以做数据图的的网站一. 简介
我们在编译 busybox源码时#xff0c;选择的是动态编译#xff0c;所以#xff0c;制作生成的 根文件系统中/bin或 /sbin目录下软件运行时会调用到一些库文件的。库文件就是交叉编译器的库文件。
前面我们编译 busybox源码时#xff0c;选择动态编译#xff0…一. 简介
我们在编译 busybox源码时选择的是动态编译所以制作生成的 根文件系统中/bin或 /sbin目录下软件运行时会调用到一些库文件的。库文件就是交叉编译器的库文件。
前面我们编译 busybox源码时选择动态编译那么这时就需要调用到动态库文件。所以根文件系统中需要存放动态库文件。当然你也可以编译成静态的但是静态的可执行文件会很大。
本文在之前编译生成的 根文件系统的基础上继续进行学习。 二. 向根文件系统添加lib库 1. 向 rootfs 的 “/lib” 目录添加库文件
打开 之前编译生成的根文件系统我这里在 ubuntu系统下/linux/nfs_File/rootfs进入 rootfs根目录下在 rootfs 文件夹下创建一个为 “lib” 的文件夹命令如下 wangtianwangtian-virtual-machine:~/linux/nfs_File/rootfs$ mkdir lib lib 文件夹创建好了库文件从哪里来呢 lib 库文件从交叉编译器中获取即我们安装的 交叉编译器路径中获取。 交叉编译器里面有很多 的库文件这些库文件具体是做什么的我们作为初学者肯定不知道既然我不知道那就简单粗 暴的把所有的库文件都放到我们的根文件系统中。这样做出来的根文件系统肯定很大但是我 们现在是学习阶段还做不了裁剪。这就是为什么我们推荐大家购买512MB8GB版本的EMMC 核心版如果后面要学习 QT 的话那占用的空间将更大不裁剪的话 512MB 的 NAND 完全不 够用的而裁剪又是需要经验的。 我这里 交叉编译器的安装路径为
usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/ (1) 拷贝 /gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/目录下库文件 进入如下路径对应的目录 wangtianwangtian-virtual-machine:~$ cd /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 目录中将该文件夹下的库文件都拷贝到 rootfs/lib目录下 wangtianwangtian-virtual-machine:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib$ cp *so* *.a /home/wangtian/linux/nfs_File/rootfs/lib/ -d 后面的“-d”表示拷贝符号链接这里有个比较特殊的库文件ld-linux-armhf.so.3此库文件也是个符号链接相当于 Windows 下的快捷方式。会链接到库 ld-2.19-2014.08-1-git.so 上通过查看可知 可以看出ld-linux-armhf.so.3 后面有个“-”表示其是个软连接文件链接到文件 ld-2.19-2014.08-1-git.so因为其是一个“快捷方式”所以其大小只有 24B。但是ld-linuxarmhf.so.3 不能作为符号链接否则的话在根文件系统中执行程序无法执行
需要我们重新复制一次 ld-linuxarmhf.so.3文件只是不复制软链接即可。 先将 rootfs/lib 中的 ld-linux-armhf.so.3 文件删除掉命令如下 wangtianwangtian-virtual-machine:~/linux/nfs_File/rootfs/lib$ rm ld-linux-armhf.so.3 然后重新进入到 /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm linux-gnueabihf/libc/lib 目录中重新拷贝 ld-linux-armhf.so.3 命令如下 cp ld-linux-armhf.so.3 /home/wangtian/linux/nfs_File/rootfs/lib/ 拷贝完成以后再到 rootfs/lib 目录下查看 ld-linux-armhf.so.3 文件详细信息如下图所示 可以看出此时 ld-linux-armhf.so.3 已经不是软连接了而是实实在在的一个库文件而且文件大小为 724392B 。 (2) 拷贝 /gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib/目录下库文件 进入如下目录中 /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib 此目录下也有很多的的 *so* 和 .a 库文件我们将其也拷贝到 rootfs/lib 目录中命令如下 cp *so* *.a /home/zuozhongkai/linux/nfs/rootfs/lib/ -d rootfs/lib 目录的库文件就这些了。至此 rootfs/lib下库文件拷贝完成。 2. 向 rootfs 的 “usr/lib” 目录添加库文件 在 rootfs 的 usr 目录下创建一个名为 lib 的目录将如下目录中的库文件拷贝到 rootfs/usr/lib 目录下 wangtianwangtian-virtual-machine:~/linux/nfs_File/rootfs/usr$ mkdir lib 进入如下目录下 cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib 将此目录下的 so 和.a 库文件都拷贝到 rootfs/usr/lib 目录中命令如下 wangtianwangtian-virtual-machine:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib$ cp *so* *.a /home/wangtian/linux/nfs_File/rootfs/usr/lib/ -d 至此根文件系统的库文件就全部添加好了可以使用“ du ”命令来查看一下 rootfs/lib 和 rootfs/usr/lib 这两个目录的大小命令如下 可以看出 lib 和 usr/lib 这两个文件的大小分别为 57MB 和 67MB 加起来就是 5767124MB 。 非常大 所以正点原子的 256MB 和 512MB 的 NAND 核心版就不是给初学者准备的而是给大 批量采购的企业准备的还是那句话初学者选择 EMMC 版本的。 三. 创建其他的文件夹 在根文件系统中创建其他文件夹如 dev 、 proc 、 mnt 、 sys 、 tmp 和 root 等创建完成以后如下所示 目前来看这个根文件系统好像已经准备好了究竟有没有准备好直接测一下就知道了