嵌入式学习之QT学习---11 QT系统移植之构建文件系统

最近这段时间学习QT的最终目的是要在嵌入式(我购买的开发板)上使用QT。如果想在嵌入式使用QT,那么在开发板上跑的系统就要支持QT,这一部分就开始学习一下制作支持QT的文件系统。这一部分是根据迅为提供的开发板手册做的,记录一下遇到的问题以及解决方法,也希望能帮助到需要帮助的人。

第一步:准备源码

根文件系统的制作使用的是busybox工具,它是集成和压缩了Linux的很多命令和工具,就像是一个大工具箱。将“busybox-1.29.0.tar.bz2”通过 ssh 工具拷贝到ubuntu下的/home/topeet/minilinux目录下,然后解压。

第二步:编译环境

跟着迅为教程一步一步进行的,个人认为仅有一点需要特别注意,就是编译器的选择,这里要修改环境变量。所需要的交叉编译器为arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,这里给一下我找到的资源链接。(不太容易上传资源,如果有需要的伙伴可以私聊我)
这里我将交叉编译的压缩包放在了ubuntu下的/usr/local/arm文件夹下,然后解压,如下图所示。
在这里插入图片描述
解压完成之后,先要修改环境变量,然后再开始编译工作。
回顾一下修改环境变量的知识,修改环境变量有两种方法:第一种是直接使用命令设置;第二种是修改.bashrc文件。
先来说一下第一种方法,命令格式为:export 变量=新增的变量值:$变量
举个例子,如下所示:

export PATH=/home/topeet/test:$PATH

如此一来,使用命令echo $PATH(“显示当前环境变量”)就可以看到/home/topeet/test/被添加到了环境变量里面。这种添加环境变量的方法是立刻生效的,但是却是临时改变了环境变量,当我们重新打开终端的时候去查看环境变量就会发现刚才新添加的环境变量没了。还有一点需要说明,这种添加换将变量的方法只对当前用户有效。
下面再来回顾一下第二种方法:修改.bashrc文件。直接在这个配置文件的最底行加上需要增加的环境变量。
这种修改办法需要先进入到root目录下,然后使用命令:vim .bashrc,使用正确的命令格式将需要的环境变量所在路径给写进去,针对目前所需的编译环境去写,由于所在路径为:/usr/local/arm/arm-2014.05/bin,故有如下命令:

export PATH=$PATH:/usr/local/arm/arm-2014.05/bin

将该条语句增加到配置文件中之后,保存退出。由于这种方法修改环境变量不会立刻生效,所以需要使用source .bashrc来使得环境变量生效。(或者不使用命令来使得增加的环境变量生效,直接关闭终端,然后再打开终端的时候,环境变量就生效了。这种增加环境变量的方式对于ubuntu来说是永久生效的,但是同样也是只对当前用户有效。)之后,再使用arm命令可以看到编译器出现了gcc-4.8.3,说明编译路径设置正确。
我的之前是gcc-4.3.2,然后编译了两次总失败,后来终于给我逮住了失败的原因。
在这里插入图片描述
环境变量设置好以后,使用命令“apt-get install libncurses5-dev”确认是否安装 ncurses 库,没有安装的话后面编译会报错。

第三步:修改配置文件使得ls命令支持中文

我把修改过后的配置文件放在了资源里面,链接如下,不要积分(libbb/printable_string.c以及libbb/unicode.c),可以直接将原来的这两个文件删掉,用SSH软件把链接里这两个文件拷贝到libbb文件夹下,也可以根据手册去修改一下。

第四步:配置 busybox

跟着手册一步一步来就行。

第五步:编译 busybox

依次使用命令makemake install。编译好之后,用file busybox查看一下属性,发现这里是x86,所以肯定不能在开发板上编译成功,给它重新编译一下。(出现这种情况是因为当时我没修改环境变量,然后编译成功之后显示的属性是这样。但是按道理来说,环境不对,应该编译不成功的,不知道它怎么还成功了。就写出来给人们做个参考吧,就是说万一有人哪儿都跟手册一样的,还出现了这种问题应该怎么做)

root@ubuntu:/home/topeet/minilinux/system/bin# file busybox
busybox: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=b97b69f50ba4bfb13277fa8d32375d6d410d0fd4, stripped
root@ubuntu:/home/topeet/minilinux/system/bin# cd ..
root@ubuntu:/home/topeet/minilinux/system# ls
bin  dev  etc  lib  linuxrc  mnt  proc  rootfs.tar.bz2  sbin  sys  system.img  tmp  usr  var
root@ubuntu:/home/topeet/minilinux/system# rm -rf ./bin/ sbin/ usr/ linuxrc 
root@ubuntu:/home/topeet/minilinux/system# ls
dev  etc  lib  mnt  proc  rootfs.tar.bz2  sys  system.img  tmp  var
root@ubuntu:/home/topeet/minilinux/system# cd ..
root@ubuntu:/home/topeet/minilinux# ls
busybox-1.29.0  busybox-1.29.0.tar.bz2  system  system.img
root@ubuntu:/home/topeet/minilinux# export ARCH=arm
root@ubuntu:/home/topeet/minilinux# export CROSS_CPMPILE=/usr/local/arm/arm-
arm-2009q3/                 arm-2009q3.tar.bz2          arm-linux-gcc-4.3.2.tar.gz  
root@ubuntu:/home/topeet/minilinux# export CROSS_CPMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
root@ubuntu:/home/topeet/minilinux# ls
busybox-1.29.0  busybox-1.29.0.tar.bz2  system  system.img
root@ubuntu:/home/topeet/minilinux# cd busybox-1.29.0
root@ubuntu:/home/topeet/minilinux/busybox-1.29.0# ls
applets                 configs        _install         Makefile.help           runit
applets_sh              console-tools  INSTALL          make_single_applets.sh  scripts
arch                    coreutils      klibc-utils      miscutils               selinux
archival                debianutils    libbb            modutils                shell
AUTHORS                 docs           libpwdgrp        networking              size_single_applets.sh
busybox                 e2fsprogs      LICENSE          NOFORK_NOEXEC.lst       sysklogd
busybox.links           editors        loginutils       NOFORK_NOEXEC.sh        testsuite
busybox_unstripped      examples       mailutils        printutils              TODO
busybox_unstripped.map  findutils      Makefile         procps                  TODO_unicode
busybox_unstripped.out  include        Makefile.custom  qemu_multiarch_testing  util-linux
Config.in               init           Makefile.flags   README
root@ubuntu:/home/topeet/minilinux/busybox-1.29.0# make clean
  CLEAN   applets
  CLEAN   .tmp_versions _install
  CLEAN   busybox busybox_unstripped busybox_unstripped.map busybox_unstripped.out busybox.links .kernelrelease

执行完这些之后,再执行命令“make”以及“make install”就会变成下面的样子:

root@ubuntu:/home/topeet/minilinux/busybox-1.29.0# file busybox
busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.16, stripped

第六步:整理最小文件系统

跟着手册来做,不会错的。

最后:验证最小文件系统是否可用

文件系统打包成功之后,能不能用还不清楚,所以还需要把它烧写到开发板里面看是否能启动。将打包好的rootfs.tar.bz2拷贝到烧写器里面,然后给开发板上电看是否开发板可以成功启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值