ARM-Linux交叉编译步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
samba
事先安装sudo apt-get install nfs-kernel-server
交叉编译步骤
1、创建目录s3c2440_recover
2、设置网络文件系统的根目录
配置文件/etc/exports
在最后一行添加
s3c2440_recover的绝对路径*(rw,sync,no_root_squash)
重启nfs
sudo /etc/init.d/nfs-kernel-server restart
3、arm开发板启动
Bootloader 引导加载程序
Kernel uImage
Filesystem
Bootloader -》把内核的uImge加载到内存
uImage 加载filesystem =》shell 用户空间
4、编译器
arm-linux-gcc-4.3.2.tar.gz
sudo tar zxvf xxx.tar.gz -C /
编译自动会解压到/usr/local/arm
设置编译器脚本(自己创建),
每次打开终端,若要使用arm编译器,则先source一下
arm-compile.sh ()
#!/bin/bash
export PA TH=$PATH:/usr/local/arm/4.3.2/bin
############### 告诉系统编译器的路径(通过在PATH环境变量中添加)修改脚本可执行权限
chmod u+x arm-compile.sh
source arm-compile.sh
4、Uboot 编译
分别解压
源码
uboot-1.2-utu2440.tar.bz2
按照uboot编译.txt
5、内核编译
准备工具
修改过的内核源码Linux2.6.24_utu2440.tar.gz
拷贝到crosscompile目录下
解压tar zxvf linux inux2.6.24_utu2440.tar.gz
制作镜像文件工具mkimage
拷贝到/usr/sbin 或者/usr/bin 目录下
参考脚本hw-kernel编译.txt
内核编译时,会根据.config 的配置文件进行文件编译
(即选择哪些模块,卸载哪些模块)
Make menuconfig 就是一个图形裁剪的配置工具,
操作结果会自动保存到.config
操作步骤参hw-kernel编译.txt
6 . Busybox 创建yaffs文件系统
准备工具
busybox-1.19.2.tar.bz2
mkyaffsimage
除开uboot、kernel之外的脚本文件
第一个脚本mkroot.sh
是用来创建根目录下的子目录的
6.1 在某个目录下执行./mkroot.sh
这时,会在当前路径下生成rootfs 目录及其子目录
进入rootfs/dev 下创建console null
操作如下:
$cd rootfs/dev/
$ su
口令:
# mknod -m 600 console c 5 1;mknod -m 666 null c 1 3;exit
退出rootfs目录
cd ../../
6.2 解压busybox.1.19.2.tar.bz2
$ cd busybox.1.19.2
修改Makefile文件
Gedit Makefile
在164行CROSS_COMPILE ?=
改为CROSS_COMPILE ?= arm-linux-
make menuconfig
设置交叉编译器的路径
设置编译输出路径,即make install会把编译生成的东西放到指定路径
配置menuconfig
Busybox Settings --->
//设置静态编译方式或者动态链接
Busybox Settings ---> Build Options ---> [] Build BusyBox as a static binary (no shared libs)
(/usr/local/arm/4.3.2/bin) cross compiler prefix
[*] Build with Large File Support (for accessing files > 2 GB)
Busybox Settings ---> Install Options ---> 中输入建立根文件系统的文件所在的路径
busybox install prefix
即rootfs的绝对路径
make
make install
备注:6.3 6.4让学生做总有问题,因为这两步其实是配置etc和lib
故为了方便,已经都做好了,放在build/busybox目录下,直接拷贝到rootfs下即可
6.3 配置rootfs下的文件信息
修改和创建必要的文件
cp -a busybox.1.19.2/examples/bootfloppy/etc/* rootfs/etc
cd rootfs/etc
增加为SHELL导入全局变量的文件/etc/profile
gedit etc/profile
增加初始化文件
gedit etc/inittab
gedit etc/fstab
增加初始化脚本
gedit etc/init.d/rcS