Linux内核源码针对S3C2440的初步框架交叉编译过程分享
2015-07-13 23:06
507 查看
Linux内核源码针对S3C2440的初步框架交叉编译过程分享
Linux内核源码下载地址:https://www.kernel.org/我是下载了linux-2.6.30.4.tar.gz,所以就以这个版本来做分享吧!
首先是进入工作目录并且创建用于编译Linux内核的子目录
$ cd /work $ mkdir kernel_build
现在进入kernel_build目录,同时将下载好的内核源码拷贝到这里
$ cd kernel_build $ cp /home/***/Downloads/linux-2.6.30.4.tar.gz .
解压内核源码包
tar zxvf linux-2.6.30.4.tar.gz
解压后得到 linux-2.6.30.4目录
在顶层目录中打开Makefile,并找到以下内容
ARCH ?= $(SUBARCH) CROSS_COMPILE ?=
将其改为以下内容
ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/4.1.2/bin/arm-angstrom-linux-gnueabi-
注1:ARCH是architecture的缩写指的是结构,这里S3C2440属于arm架构
注2:CROSS_COMPILE指的是交叉编译工具链的头(即工具链的前半部分名字)
注3:我的交叉编译工具链用的是eabi
注4:?=的意思是如果没有被赋值过就赋予等号后面的值;:= 的意思是覆盖之前的值;+= 的意思是添加等号后面的值。
保存退出
这个就不细说了吧-_-
配置.config文件
在顶层/arch/arm/configs中很容易找到s3c2410_defconfig,因为2440与2410在很多方面都是一样的,所以这里的配置可以直接用2410 的,现在,为了将2410 的配置项写入顶层的.config文件中,需要在顶层目录执行下面的代码
$ make s3c2410_defconfig
配置内核(进入菜单式的配置界面)
注:Makefile是Linux内核编译管理文件(即用来告诉编译器该如何组织编译)
Kconfig文件是配置管理文件,用来管理各配置项,以生成.config文件
.config文件是用来为Makefile提供具体配置项的,从而帮助Makefile来告知编译器该如何组织编译内核源码。
$ make menuconfig
System Type —>//体系确认
ARM system type (Samsung S3C2410, S3C2412, … , S3C2443)
Kernel Features —>//内核特性
[*] Use the ARM EABI to compile the kernel //支持eabi
Boot options —>//启动项参数设置
Default kernel command string —>//内核启动参数(可内核自定义,也可由uboot传递,此时,我们的目的是检验修改后内核的框架是否正确,所以暂时直接由内核自定义即可)
内容为: root=/dev/mtdblock2 rootfstype=jffs2 console=ttySAC0,115200
root=/dev/mtdblock2 //指的是内核启动时文件系统的挂载点,block0用来放bootloader,block1用来放内核,block2用来放文件(系统)
rootfstype=jffs2 //用来指定文件系统类型(文件系统的初始化算法)
console=ttySAC0,115200 //指定与控制台交互的设备为串口,同时指定波特率为115200
File systems —>//文件系统支持
[*] Miscellaneous filesystems —>//选中所有jffs2文件系统选项
Device Drivers —>//设备驱动配置
<*> Memory Technology Device (MTD) support —>
[*] MTD partitioning support //闪存分区支持
<*> NAND Device Support —>
<*> NAND Flash support for S3C2410/S3C2440 SoC
保存退出
编译
$ make -j16
注:-j16的意思是开启8线程编译,用来加快编译速度
得到zImage文件
若编译不出问题,则稍等片刻便可以在顶层目录/arch/arm/boot目录中发现zImage文件。
至此框架搭建已完成,但是针对具体平台的细节还没有做配置,也就是说这并不是一个完整的针对S3C2440的Linux内核镜像,而是一个框架结构是正确的初步的Linux内核镜像,并不能直接拿来用的!后续还有很多具体的工作是必须要做的奥!
相关文章推荐
- 《coredump问题原理探究》Linux x86版7.9节list相关的iterator对象
- 每天一个linux命令(1):ls命令
- linux程序设计——命名管道FIFO(第十三章)
- 在虚拟机下安装Linux操作系统遇到的问题
- linux下压缩工具总结与使用(参考私房菜)
- CentOS 7 折腾小记
- 第二章、Linux操作系统及常用命令
- 七月十三日 Linux操作系统c语言学习笔记
- 马哥Linux笔记整理
- U盘安装linux(ubuntu)
- Linux Makefile学习(一)
- ffmpeg linux编译
- 在GNU/Linux下使用命令行自动挂载与卸载USB磁盘
- Linux操作杂记
- linux find命令小结
- linux yum命令详解
- CentOS yum 源的配置与使用
- CentOS 6.4安装配置ldap+svn
- 深入理解Linux内核-进程
- Linux下使用Caffe对图片进行训练并分类的简单流程