rootfs linux映像 应用交叉编译环境搭建工具版本必须相同吗

求助,关于交叉编译_archlinux吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:7,649贴子:
求助,关于交叉编译收藏
根据我的理解,制作交叉编译工具链的基本过程是这样的:1.编译目标系统的binutils2.编译目标系统的gcc,不含C库支持版本,为了方便区分这里先称作gcc stage13.用目标系统的gcc stage1编译C库4.编译出支持C库的目标系统gcc,称作gcc stage2这样对吗?如果对的话,谁实践过不借助工具构建交叉编译工具链的可以发下大概过程么?我Google上找了一些,不是过时就是只做到stage1结束了。
三叔正版授权网游公测!
你看一下CLFS就知道了,LFS也可以,但是LFS不强调交叉编译,所有看能看了之后体会不深。如果是针对裸机的,其实可以连libc都不要,而且binutils和gcc都只需要编译一遍,一个例子是coreboot的交叉工具链,看看make crossgcc的过程就知道了。针对Linux的话,根据CLFS的步骤,是这么做的:1. cross binutils: 在HOST上运行,产生TARGET的二进制文件2. cross gcc (static): 在HOST上运行,产生TARGET的二进制文件,不产生动态库,不使用TARGET平台的C库3. glibc: TARGET平台的C库,用前两步构建的交叉工具链编译4. cross gcc: 在HOST上运行,产生TARGET的二进制文件,交叉编译时使用上一步的glibc这个时候已经可以构建出独立运行于TARGET的程序了,crosstool-ng之类的工具做到这里就完成任务了。对于CLFS,还要先构建一套工具,其中的binutils和gcc都是TARGET-&TARGET,最后boot/chroot之后再用这套工具构建最终的系统。
源里有arm的交叉编译工具链
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或linux交叉编译环境_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
linux交叉编译环境
上传于||暂无简介
大小:811.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢制作根文件系统镜像工具mkfs编译_Linux教程_Linux公社-Linux系统门户网站
你好,游客
制作根文件系统镜像工具mkfs编译
来源:Linux社区&
作者:water_cow
开发环境:
系统环境:龙芯1B开发板(mips32指令)、Linux 3.0.0内核
编译环境: 10.04 ,gcc-3.4.6-2f
本文要用到的相关文件(cramfs-1.1.tar.gz、yaffs2-d43e901.tar.gz、mtd-utils-1.0.0.tar.gz)下载:
免费下载地址在
用户名与密码都是
具体下载目录在 /pub//制作根文件系统镜像工具mkfs编译/
1.mkcramfs工具
下载cramfs-1.1.tar.gz
#tar zxf cramfs-1.1.tar.gz
#cd cramfs-1.1
#make (编译完成后,在本地目录生成mkcramfs工具)
#./mkcramfs /root/rootfs rootfs-cramfs.img (其中:/root/rootfs为根文件系统路径;rootfs-cramfs.img为生成的cramfs镜像文件)
Cramfs文件系统烧写:
1、配置开发板烧写环境,进入pmon命令行
2、烧写系统:
# devcp tftp://192.168.*.***/rootfs-cramfs.img /dev/mtd1 (其中:192.168.*.***为主机IP)
2.mkyaffs工具
下载最新的yaffs工具包:yaffs2-d43e901.tar.gz。(备注:序列号可能不同)
#tar zxf yaffs2-d43e901.tar.gz
#cd yaffs2-d43e901
#make& (编译完成后,在本地目录生成yaffs工具mkyaffsimg与mkyaffs2img)
#./mkyaffs2img /root/rootfs rootfs-yaffs2.img& (本地目录生成yaffs2镜像文件rootfs-yaffs2.img)
Yaffs2文件系统烧写:
1、配置开发板烧写环境,进入pmon命令行
2、擦除分区1:
# mtd_erase /dev/mtd1
3、烧写系统:
# devcp tftp://192.168.*.***/rootfs-yaffs2.img /dev/mtd1 yaf nw
3.mkjffs工具
下载mtd-utils-1.0.0.tar.gz工具包。
# tar zxf mtd-utitls-1.0.0
# make (编译完成后,本地目录生成jffs工具mk.jffs与mk.jffs2)
#./mk.jffs2 -r /root/rootfs -o rootfs-jffs2.img -e 0x4000 --pad=0x800000 -n (本地目录生成jaffs2镜像文件rootfs-jffs2.img,-e表示擦除块的大小,--pad表示要创建的文件系统大小)
Jaffs2文件系统烧写:
1、配置开发板烧写环境,进入pmon命令行
2、烧写系统:
# devcp tftp://192.168.*.***/rootfs-jffs2.img /dev/mtd1
相关资讯 & & &
& (07/28/:23)
& (11/03/:38)
& (06/06/:40)
& (01/28/:00)
& (10/07/:52)
& (05/15/:55)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款Linux(90)
http://www.swiftboard.org/wiki/index.php?title=Linux_ROM#.E6.89.93.E5.8C.85ROM
本文主要介绍如何为swiftboard(以下简称sw)定制一个Linux发行版ROM.
本教程假定读者有Linux基础,了解常用命令工具
通常,一个Linux ROM由 bootloader, linux kernel 和 rootfs 构成.在全志平台上,ROM中还包含一个硬件配置文件(script.bin),主要用于描述外设参数以及与SoC之间连接.
sw上有一般两种方式引导系统, 板载的NAND和外接的TF卡.这两种方式的ROM除了bootloader和打包方式不同外,并无太大区别.两种方式的ROM制作本文均会涉及,有区别之处会分别介绍.
需要的开发环境:
版本较新的Linux发行版(如ubuntu 12.04),制作NAND版ROM必须用64位系统(全志打包工具要求)64位系统安装 ia32-libs必须的build工具集(make,gcc等) build-essential交叉编译器 gcc-arm-linux-gnueabihfuImage制作工具 uboot-mkimage全志fex编译工具 fex2bin ()
下载针对sw修改过的kernel代码&
下载内核配置文件&&,改名为&.config&后放入代码根目录
cd 代码所在目录
#编译内核及模块
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules
#新建模块输出目录
mkdir output
#安装模块到输出目录
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output modules_install
本节以linaro ubuntu为例,其他发行版操作类似.
下载linux发行版的rootfs并解压&
#请确保解压时使用root权限,否则某些文件无法创建
sudo tar -xvf linaro-quantal-alip-.tar.gz
进入rootfs的根目录后,复制上一节产生的内核模块
sudo cp -r 内核代码目录/output/lib .
新建显示驱动配置文件 usr/share/X11/xorg.conf.d/99-fbdev.conf
Section &Device&
Identifier
&Allwinner A10/A13 FBDEV&
&fbdev& &/dev/fb0&
EndSection
修改启动加载模块列表 etc/modules
新建无线网卡参数配置文件 etc/modprobe.d/8188eu.conf
# Workaround for dropping connections because power save
options 8188eu rtw_power_mgnt=0 rtw_enusbss=0
你还可以对rootfs进一步定制,现在对rootfs的修改都将反映到最终生成的ROM中
sys_config1.fex是全志设计的用于描述设备连接的配置文件,格式简单易懂,可以使用文本编辑器修改.
本教程使用的文件修改自swiftboard官方的共享.
从下载后保存为sys_config1.fex
fex文件需要转为二进制格式才能被内核读取,因此需要转换(制作NAND版ROM可以跳过此步骤,打包时会自动转换)
fex2bin sys_config1.fex &script.bin
我们选用u-boot作为ROM的bootloader, 对于TF和NAND版ROM使用不同的u-boot
cd u-boot-sunxi
git checkout v2013.07-sunxi
make 'Cubieboard' CROSS_COMPILE=arm-linux-gnueabihf-
编译成功后会得到 spl/sunxi-spl.bin u-boot.bin 两个文件
从下载lichee版u-boot
进入代码目录,编译
make distclean && make sun4i CROSS_COMPILE=arm-linux-gnueabihf-
编译成功后将得到u-boot.bin文件
为了制作ROM,我们首先要准备一个空白磁盘(不是分区),这个磁盘的所有内容(包括分区表)将被完全复制到最终的TF卡上.
考虑到实际的可操作性,我们用一个虚拟磁盘镜像文件替代物理磁盘.所以我们要先生成一个包含分区表的磁盘镜像文件.
#生成一个空白文件.大小为1750M(由于存储厂商克扣容量,1800M就是2G卡实际容量,设小一点是为了踏实一些),可根据实际情况调整.
dd if=/dev/zero of=tf.img bs=1M count=2048
#把镜像文件映射到loop设备上
sudo losetup /dev/loop0 tf.img
#分区(共两个分区,一个引导用分区,存放kernel和fex配置;另一个是根分区)
sudo sfdisk --in-order -L -uS /dev/loop0 &&-EOT
#把分区从磁盘中映射出来,生成loop0p1, loop0p2设备
sudo kpartx -av /dev/loop0
#格式化两个分区(注意,在某些发行版上,上一步映射出的设备文件位置可能不同,需调整)
sudo mkfs.vfat -I /dev/mapper/loop0p1
sudo mkfs.ext4 /dev/mapper/loop0p2
至此,虚拟磁盘准备完毕.现在不忙卸载loop设备,因为我们还要往里面复制文件.
首先复制引导分区的文件
sudo mount /dev/mapper/loop0p1 /mnt
sudo cp kernel目录/arch/arm/boot/uImage /mnt
sudo cp fex所在目录/script.bin /mnt
sudo umount /mnt
接着复制根分区文件
sudo mount /dev/mapper/loop0p2 /mnt
cd rootfs目录
sudo cp -a * /mnt
sudo umount /mnt
解除分区映射
sudo kpartx -d /dev/loop0
然后向虚拟磁盘中写入u-boot (u-boot位于第一个分区前的未分区空间中)
cd u-boot所在目录
sudo dd if=spl/sunxi-spl.bin of=/dev/loop0 bs=1024 seek=8
sudo dd if=u-boot.bin of=/dev/loop0 bs=1024 seek=32
最后卸载loop设备
sudo losetup -d /dev/loop0
大功告成! tf.img就是最终生成的ROM镜像文件了
NAND版ROM打包需要使用全志的打包工具&&进入打包工具所在目录后
cd a10/out
cp u-boot目录/u-boot.bin .
cp kernel目录/arch/arm/boot/uImage boot.img
#创建分区镜像文件
dd if=/dev/zero of=rootfs.ext4 bs=1M count=1907
mkfs.ext4 rootfs.ext4
#复制rootfs文件
sudo mount -o loop rootfs.ext4 /mnt
sudo cp -a rootfs目录/* /mnt
sudo umount /mnt
cd ../tools/pack
#复制fex配置文件
cp fex目录/sys_config1.fex chips/sun4i/configs/linux/default/sys_config1.fex
#最后运行打包程序
./pack -c sun4i -p linux -b evb -B nand
如果打包成功,最后会输出一行红字,显示产生的img的位置
直接将img文件写入TF卡即可,windows用户可使用工具,linux/mac用户可使用dd工具
按操作即可
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:199608次
积分:4205
积分:4205
排名:第5023名
原创:132篇
转载:519篇
评论:27条
(2)(7)(15)(25)(29)(35)(6)(2)(5)(13)(1)(3)(7)(5)(2)(3)(15)(19)(2)(7)(25)(15)(23)(12)(13)(12)(34)(133)(53)(49)(52)(30)(1)}

我要回帖

更多关于 交叉编译工具 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信