嵌入式Linux-根文件系统1_如何移植busybox和动态共享库
2018-03-21 14:53
363 查看
一.busybox
编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 这些目录下存储的主要是常用命令的二进制文件。有了busyb,就不需要自己编写这几百个常用命令的源程序,而是直接调用。
下载BUSYBOX的源码包:http://busybox.net/downloads/
tar xjvf busybox-1.7.0.tar.bz2解包
修改Makefile文件
175ARCH ?= arm
176 CROSS_COMPILE ?= arm-linux- 4.make menuconfig配置busybox
配置和编译busybox:
deconfig:默认配置
allnoconfig:禁用所有的应用程序(空)
alllyesconfig:启用所有的应用程序(完整)
config:基于文本的 配置
menuconfig:基于菜单配置
clean:清除源代码树
distclean:彻底清除源代码树
通常的 流程:
配置 :make menuconfig
编译 :make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
安装 :make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- install
安装之后默认生成_install 目录,里面有bin, sbin,usr/bin, usr/sbin 四个目录 。目录文件夹下是busybox的符合连接,bin下是可执行文件 。其下包含了我们常用的命令,这些命令都是指向bin/busybox的软链接,而busybox本身的大小不到800K:将这四个文件夹拷贝出来:
cd _install
cp -a * /zw/work/rootfs
busybox配置主要分两部分。第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:1)、Build Options -- Build BusyBox as astatic binary (no shared libs),表示编译busybox时,是否静态链接C库。我们选择动态链接C库。2)、Installation Options -- Applets links(as soft-links) -- (X) as soft-links,表示安装busybox时,将各个命令安装为指向busybox的软链接还是硬链接。我们选择软链接。3)、Installation Options --(/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安装位置。我们选择/work/nfs_root/fs_mini34)Busybox Library Tuning。保留Command line editing以支持命令行编辑;保留History size以支持记忆历史命令;选中Tab completion和Username completion以支持命令自动补全第二部分是Applets,他将busybox的支持的几百个命令分门别类。我们只要在各个门类下选择想要的命令即可。这里我们基本保持默认设置。1)选中Networking Utilities -- httpd下的Enable -u <user> option,以启用http服务器的功能allows the server to run as a specificuser
二。选择必要的动态共享库
如果出现error while loading shared libraries,表示动态连接器找不到动态共享库。
连接器的搜索目录顺序是 :
1.Makefile中 对GCC连接加入参数 “-Wl,-rpath”指定 动态库搜索路径
2.环境变量 LD_LIBRARY_PATH指定动态库搜索路径
3.默认动态库搜索路径 /lib
4. 默认动态库搜索路径 /usr/lib
嵌入式系统中 ,一般把所需要的库统一放到/lib目录中 ,
编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 这些目录下存储的主要是常用命令的二进制文件。有了busyb,就不需要自己编写这几百个常用命令的源程序,而是直接调用。
下载BUSYBOX的源码包:http://busybox.net/downloads/
tar xjvf busybox-1.7.0.tar.bz2解包
修改Makefile文件
175ARCH ?= arm
176 CROSS_COMPILE ?= arm-linux- 4.make menuconfig配置busybox
配置和编译busybox:
deconfig:默认配置
allnoconfig:禁用所有的应用程序(空)
alllyesconfig:启用所有的应用程序(完整)
config:基于文本的 配置
menuconfig:基于菜单配置
clean:清除源代码树
distclean:彻底清除源代码树
通常的 流程:
配置 :make menuconfig
编译 :make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
安装 :make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- install
安装之后默认生成_install 目录,里面有bin, sbin,usr/bin, usr/sbin 四个目录 。目录文件夹下是busybox的符合连接,bin下是可执行文件 。其下包含了我们常用的命令,这些命令都是指向bin/busybox的软链接,而busybox本身的大小不到800K:将这四个文件夹拷贝出来:
cd _install
cp -a * /zw/work/rootfs
busybox配置主要分两部分。第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:1)、Build Options -- Build BusyBox as astatic binary (no shared libs),表示编译busybox时,是否静态链接C库。我们选择动态链接C库。2)、Installation Options -- Applets links(as soft-links) -- (X) as soft-links,表示安装busybox时,将各个命令安装为指向busybox的软链接还是硬链接。我们选择软链接。3)、Installation Options --(/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安装位置。我们选择/work/nfs_root/fs_mini34)Busybox Library Tuning。保留Command line editing以支持命令行编辑;保留History size以支持记忆历史命令;选中Tab completion和Username completion以支持命令自动补全第二部分是Applets,他将busybox的支持的几百个命令分门别类。我们只要在各个门类下选择想要的命令即可。这里我们基本保持默认设置。1)选中Networking Utilities -- httpd下的Enable -u <user> option,以启用http服务器的功能allows the server to run as a specificuser
二。选择必要的动态共享库
如果出现error while loading shared libraries,表示动态连接器找不到动态共享库。
连接器的搜索目录顺序是 :
1.Makefile中 对GCC连接加入参数 “-Wl,-rpath”指定 动态库搜索路径
2.环境变量 LD_LIBRARY_PATH指定动态库搜索路径
3.默认动态库搜索路径 /lib
4. 默认动态库搜索路径 /usr/lib
嵌入式系统中 ,一般把所需要的库统一放到/lib目录中 ,
相关文章推荐
- busybox移植yaffs2根文件系统
- 如何在AT91RM9200上移植jffs2文件系统
- 基于busybox1.19.3移植yaffs2文件系统至OK6410A开发板
- arm-linux移植手记(四)基于busybox1.16.0的根文件系统制作
- linux下可执行程序如何定位共享库文件以及如何让系统找到用户指定的库
- 移植文件系统(busybox1.12.2)到S3C2410平台出现的问题....
- 如何实现虚拟客户机linux系统与主机Windows的文件共享或互访?
- mini2440中busybox和yaffs2文件系统的移植
- 编译文件系统移植linux-3.0.62 + busybox最小系统到单板TQ2440
- VMware中如何实现Linux系统与宿主机文件共享
- busybox制作根文件系统时静态和动态的选择
- linux-2.6.24.4内核移植到s3c2440----使用busybox-1.9.2制作根文件系统
- VMware中如何实现Linux系统与宿主机文件共享
- linux下可执行程序如何定位共享库文件以及如何让系统找到用户指定的库
- 基于S3C2440的busybox的移植 yaffs根文件系统制作
- Busybox1.13.3制作yaffs2根文件系统(静态和动态)
- 基于S3C2440的busybox的移植 yaffs根文件系统制作
- Busybox1.13.3制作yaffs2根文件系统(静态和动态)
- 基于S3C2440的busybox的移植 yaffs根文件系统制作
- 嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之文件系统