实验一 嵌入式交叉工具链的安装及使用
一、实验目的
学会在Ubuntu环境嵌入式交叉工具的下载和安装,并练习交叉工具的使用。
二、实验要求
(1)下载嵌入式交叉编译工具;
(2)完成嵌入式交叉编译工具的安装;
(3)编写程序,练习交叉工具链的使用;
(4)做完实验后给出本实验的实验报告。
三、实验设备、环境
序号 名称 型号与规格 数量 备注
1 计算机系统(PC机) 1
2 安装Ubuntu系统的虚拟机 1
四、实验内容与实验结果
-
下载交叉编译工具链
-
完成解压
-
进行交叉编译工具链的安装
五、主要源程序分析
创建目录:
sudo mkdir /usr/local/arm
拷贝源文件:
sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f
解压:
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
修改环境变量:
sudo vim /etc/profile
添加内容:
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
重启后安装相关库:
sudo apt-get install lsb-core lib32stdc++6
交叉编译器验证:
arm-linux-gnueabihf-gcc -v
六、实验心得
交叉编译的入门介绍就结束了。其实主要就几个步骤:
确定主机平台和目标平台;
获取对应交叉编译工具链;
开始交叉编译。
其实第三步还是比较复杂的,不同的软件各有不同,但是也是有一些共通的地方,就是:
传入交叉编译工具的名称,如gcc和g++,其他还可能需要ld等。
传入目标平台的架构、系统等详细信息,因为交叉编译的时候,软件本身无法去检测平台的特性,需要明确传入。
安装目录(可选)
主要是这些参数的传入方式不同,需要具体用到的时候具体去查一下。
实验心得:
通过本次实验,了解和掌握了交叉编译模式和方法,熟悉和掌握了Linux简单程序设计。在实验开始时对实验的整体流程的了解还不是很清楚,但是在经过助教的讲解后,就有了比较清楚的逻辑。最后在操作中还是遇到了很多问题,因为对linux指令了解还不深入,所以在解决问题时会浪费很多时间。所以我体会到了这门课要学好还需要做好基础功,多了解和掌握linux相关的指令和知识,同时多加练习,才能为以后打好基础。
实验三 嵌入式Linux根文件系统制作
一、实验目的
Busybox的安装与编译、构建根文件系统。
二、实验要求
(1)Busybox的下载与安装;
(2)构建根文件系统;
(3)Busybox的编译;
(4)做完实验后给出本实验的实验报告。
三、实验设备、环境
序号 名称 型号与规格 数量 备注
1 计算机系统(PC机) 1
2 安装Ubuntu系统的虚拟机 1
四、实验内容与实验结果
-
下载linux源码、Busybox源码
-
完成解压
-
进行嵌入式Linux系统的编译
-
安装Busybox并进行根文件系统的制作
五、主要源程序分析
(1)配置Busybox
缺省配置,也是默认配置sudo make defconfig
图形化配置 make menuconfig
编译busybox make install CONFIG_PREFIX=/root/imx6ull/rootfs
(2)整理最小文件系统
创建文件夹 mkdir dev etc lib mnt proc sys tmp var
向/lib目录下添加库文件,向/usr/lib目录添加库文件: cp so *.a ~/rootfs/lib/ -d
向/etc目录添加配置文件 sudo mkdir ~/rootfs/etc/init.d/rcS文件
六、实验心得
出现的问题:在修改printable_string.c提示权限不够
解决方法:使用sudo vim命令打开文件,或者chmod修改文件权限后再vim编辑文件。
实验心得:
本次实验中,我学习了嵌入式Linux系统的编译和Busybox实现根文件系统制作的步骤。要注意的是在进行配置时,使用make menuconfig图形化方式配置,可以比较全面且便捷的配置方式。在整理最小文件系统时,我也学习到了嵌入式的最小文件系统的整理,并将其他文件的lib库文件移植到文件系统中,以及添加配置文件。
在操作中遇到一些困难,因为对linux指令了解还不深入,在上网查询指令的用法,做好基本功,是完成本次实验必不可少的。同时,构建嵌入式根文件系统包括Linux内核启动时所必须的目录和关键性的文件,根文件系统的制作也让我能够更加深入地剖析Linux文件系统的结构。
所以我体会到了这门课要学好还需要做好基础功,经过长时间的训练和学习,才能更加的熟悉掌握Linux系统的编译。