本帖最后由 白菜爱吃白菜 于 2016-10-21 14:58 编辑
前两篇** 【安防记录仪】第一篇 i.MX6的Uboot代码获取编译及烧写 和 【安防记录仪】第二篇 Kernel代码获取和编译 分别介绍了Uboot和Kernel,这篇文档里面介绍的是文件系统的代码获取、编译及烧写。
yocto系统里编译出来的镜像里已包含Uboot、Kernel和文件系统,所以不需要自己编译文件系统。对于我来说,需要自己编译一个文件系统。
使用Buildroot来编译一个文件系统是十分便利的事,只需要一些配置,Buildroot会自动去下载、编译和生成镜像文件。
下载
下载Buildroot可以从官网上下载,我下载的是buildroot-2016.05.tar.gz,下载后解压缩文件
配置
编译之前,需要配置一下,在目录下执行 make menuconfig
- 主界面:
- Target options:目标CPU配置,例如CPU结构,内核等配置
- Build options:编译选项,编译文件系统时的一些选项,可以不改动
- Toolchain:交叉编译工具链的配置,可以选择系统自带的或者客户定制的,对于我来说是选择飞思卡尔的交叉编译工具链gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12,同时在Target options中选择glibc
- System configuration:文件系统的一些配置,例如hostname、欢迎词、登录密码等
- Kernel:编译内核,对于我们是不需要
- Target packages:编译程序,可以选择你需要的应用程序编译进文件系统
- Filesystem images:编译输出的文件系统格式,我选择ext4
- Bootloaders:编译bootloader,对于我们不需要
- Host utilities:编译一些主机工具
- Legacy config options:其他配置
输出
Buildroot的工作目录在output下,包含一下目录
- build:应用程序的编译目录
- host:主机工具目录,包括交叉编译工具链
- images:生成的文件系统,包含rootfs.ext4和rootfs.tar,其中rootfs.tar是文件系统的压缩包,解压缩需要root用户,因为只有root用户才能有权限创建设备
- target:文件系统根目录,但是该文件夹不能做文件系统,因为我们编译时是使用普通用户,无法创建设备文件。
出现的问题
1.包含当前目录问题 You seem to have the current working directory in your
PATH environment variable. This doesn’t work.
make: * [core-dependencies] 错误 1
原因:
由于我的环境变量PATH中包含当前目录 echo $PATH为xxx:.:yyy
解决方法:
重新export PATH,对PATH重新赋值,删除当前目录
顶0踩
顶0踩
|