i.mx6soloX开发 之 文件系统

写在前头

*.版权声明:本篇文章为原创,可随意转载,转载请注明出处,谢谢!另我创建一个QQ群82642304,欢迎加入!
*.备注:整个系列基于官方的i.MX6soloX sabresd开发板,只是对我所学进行总结,记录我认为是关键的点,另我能力有限,难免出现疏漏错误,如果读者有发现请多指正,以免我误导他人!


Buildroot

yocto系统里编译出来的镜像里已包含Uboot、Kernel和文件系统,所以不需要自己编译文件系统。对于我来说,需要自己编译一个文件系统。
使用Buildroot来编译一个文件系统是十分便利的事,只需要一些配置,Buildroot会自动去下载、编译和生成镜像文件。


下载

下载Buildroot可以从官网上下载,我下载的是buildroot-2016.05.tar.gz,下载后解压缩文件

配置

编译之前,需要配置一下,在目录下执行

make menuconfig

  1. 主界面:
    i.mx6soloX开发 之 文件系统_第1张图片
    • Target options:目标CPU配置,例如CPU结构,内核等配置
      i.mx6soloX开发 之 文件系统_第2张图片
    • Build options:编译选项,编译文件系统时的一些选项,可以不改动
    • Toolchain:交叉编译工具链的配置,可以选择系统自带的或者客户定制的,对于我来说是选择飞思卡尔的交叉编译工具链gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12,同时在Target options中选择glibc
      i.mx6soloX开发 之 文件系统_第3张图片
    • System configuration:文件系统的一些配置,例如hostname、欢迎词、登录密码等
      i.mx6soloX开发 之 文件系统_第4张图片
    • Kernel:编译内核,对于我们是不需要
    • Target packages:编译程序,可以选择你需要的应用程序编译进文件系统
      i.mx6soloX开发 之 文件系统_第5张图片
    • Filesystem images:编译输出的文件系统格式,我选择ext4
      i.mx6soloX开发 之 文件系统_第6张图片
    • 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重新赋值,删除当前目录
2. 选用gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12交叉编译工具时提示:

/path/to/yourdir/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find crt1.o: No such file or directory

原因:buildroot制作交叉编译工具时拷贝不完全
解决方法:
进入/path/to/yourdir/buildroot-2016.05/output/host/usr/arm-buildroot-linux-gnueabi/sysroot目录下,软链接default到本目录

ln -s . default

不要make clean,直接执行make即可

你可能感兴趣的:(飞思卡尔i.MX6系列)