首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>内核技术>正文

交叉编译Linux内核(2.6.22.6)

http://www.oklinux.cn  2007-10-11  来源:  kit  会员收藏  游客收藏  【 】 

动手编译内核之前,至少应该看看源码根目录下的README文件,并参考一些其他的资料,了解编译一个内核所需要的基本条件和环境,以及基本的步骤。

  我使用的交叉编译器是arm-iwmmxt-linux-gnueabi-gcc(4.2.1),选用的内核版本是Linux-2.6.22.6。以下操作均以普通用户身份进行:

  (1)make mrproper

  编译之前检查内核源码树是否“纯净”(clean),必作。

  (2)make ARCH=arm CROSS_COMPILE=arm-iwmmxt-linux-gnueabi- menuconfig

  配置内核。2.6内核早已支持图形界面的xconfig和gconfig,不过还是推荐使用menuconfig,更容易配置。选择使用PXA270处理器的mainstone开发板作为目标系统进行试验(Intel HCDDBBVA0 Development Platform),并精简不必要的选项和模块。

  内核配置选项中目标系统名称与具体开发板的对应关系可以查看arch/arm/mach-pxa/Kconfig文件。

  配置完毕选择保存,默认会将当前配置保存到.config文件,也可以指定一个文件名如test.config,下次配置时可以load这个文件加载相应的配置。

  (3)make ARCH=arm CROSS_COMPILE=arm-iwmmxt-linux-gnueabi-
  编译内核。

  可能遇到nvram.c中“undefined reference to `rtc_lock'”的错误。修正办法是:在nvram.c中“#include ”,修改include/linux/mc146818rtc.h文件,将其中对“#include ”一段的条件编译选项“#ifdef __KERNEL__ ... #endif”去掉。

  编译完毕可以使用命令"echo $?"检查编译是否正常完成,正确结果为0。

  这时在内核源码树顶层目录生成了vmlinux(ELF格式的非压缩内核)以及相应的符号表文件System.map,可以直接下载到内存进行调试。另外还生成了arch/arm/boot/compressed/vmlinux(ELF格式的压缩内核),还有arch/arm/boot/zImage(压缩内核映像文件)。

  查看vmlinux文件信息如下:

  [aaronwong@localhost linux-2.6.22.6]$ file vmlinux
  vmlinux: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped

  (4)make ARCH=arm CROSS_COMPILE=arm-iwmmxt-linux-gnueabi- INSTALL_MOD_PATH=${TESTROOTFS} modules_install

  安装内核模块。先定义一个${TESTROOTFS},将模块安装到这里。

  (5)安装内核。
  a)cp vmlinux ${TESTROOTFS}/boot/vmlinux-2.6.22.6
  b)cp System.map ${TESTROOTFS}/boot/System.map-2.6.22.6
  c)cp .config ${TESTROOTFS}/boot/config-2.6.22.6

 


上一篇:介绍类Linux中各种各样的编程语言   下一篇:用Tftp向目标板烧写Linux的系统内核过程


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·用Tftp向目标板烧写Linux的系统内核过程
·UNIX操作系统的加锁解锁:等待事件及唤醒
·Linux系统下内核模块开发详细解析
·在Ubuntu 7.0下 编译使用新内核的方法
·Linux2.6内核模块获取sys call table地址
·一种解读Linux系统内核源码的好方法
·Linux内核isdn_net.c文件 本地溢出漏洞
·开源空间:交叉编译Linux 2.6.22.6内核
·较为基础的Linux系统设备驱动
·支持3D高清 应用Linux ATI显卡开源驱动
·Linux内核补丁AMD旁路转换缓冲(TLB)错误
·基于2.6.9内核小型Linux系统制作与移植
·Linux系统中使用GCC CPU参数优化代码编译
·Linux系统的内核初始化过程详细解析
·Linux系统的引导过程详细解析
·Linux系统高手之路 内核编译过程解析
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux系统下内核定时器的用法
·学习园地:Linux系统内核中判断大小的
·系统编译:如何给Make命令来传递参数
·Linux 2.6内核中sysfs文件系统简单概述
·Fedora 8 Linux系统的内核配置注意事项
·升级Linux内核的一般步骤方法
·Linux发行版知识普及:三个版本的CPUID
·编译安装Virtualbox驱动模块
· Linux系统的内核解读入门
·新手学堂 Linux系统的内核解读入门
·Linux系统内核中网络参数的意义及其应
·走向Linux系统高手之路 内核编译过程解
  阅读排行
· 深入理解LINUX内核中文版下载地址
·基于S3C44B0微处理器的uClinux内核引导
·Kernel command using Linux system ca
·Linux 2.6内核如何武装Fedora Core 2
·Linux操作系统的内核编译内幕详解
·Process priority and control on AIX
·推荐:Linux用户态与内核态的交互
·通过振动向Linux ThinkPad传输信息
·Linux操作系统源代码详细分析(二)
·Linux系统内核接收以太帧的处理程序
·揭秘Linux内核调试器之内幕
·Linux and symmetric multiprocessing
·主流嵌入式Linux系统下GUI解决方案
·用命令行加挂Linux的文件系统简介
·Linux内核和核心OS组件的测试与分析
网摘收藏: