写在前面:2.6.14版本的内核用arm-linux-gcc4.4.3没有编译成功,下载2.6.37版本的内核用arm-linux-gcc4.4.3编译通过。

一、首先下载linux内核:

linux-2.6.14.tar.bz2 下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2

二、解压linux-2.6.14.tar.bz2:

tar -jxvf linux-2.6.14.tar.bz2

三、配置Makefile文件:

1、打开源码根目录下的Makefile文件:

gedit Makefile

修改Makefile文件:

ARCH            ?= arm
CROSS_COMPILE   ?= arm-linux-

2、查看目录结构:

ls -l linux-2.6.14/arch/arm/

drwxrwxr-x 4 mlx mlx  4096 Oct 28  2005 boot
drwxrwxr-x 2 mlx mlx  4096 Oct 28  2005 common
drwxrwxr-x 2 mlx mlx  4096 Oct 28  2005 configs
-rw-rw-r-- 1 mlx mlx 21221 Oct 28  2005 Kconfig
-rw-rw-r-- 1 mlx mlx  3845 Oct 28  2005 Kconfig.debug
drwxrwxr-x 2 mlx mlx  4096 Oct 28  2005 kernel
drwxrwxr-x 2 mlx mlx  4096 Oct 28  2005 lib
... ...
drwxrwxr-x 2 mlx mlx  4096 Oct 28  2005 mach-s3c2410
... ...

可以看到该内核支持s3c2410芯片。

3、查看芯片的默认配置文件:

ls -l linux-2.6.14/arch/arm/configs/

-rw-rw-r-- 1 mlx mlx 18719 Oct 28  2005 rpc_defconfig
-rw-rw-r-- 1 mlx mlx 20543 Oct 28  2005 s3c2410_defconfig
-rw-rw-r-- 1 mlx mlx 16901 Oct 28  2005 shannon_defconfig
-rw-rw-r-- 1 mlx mlx 21104 Oct 28  2005 shark_defconfig
-rw-rw-r-- 1 mlx mlx 18173 Oct 28  2005 simpad_defconfig
-rw-rw-r-- 1 mlx mlx 13382 Oct 28  2005 smdk2410_defconfig
-rw-rw-r-- 1 mlx mlx 28956 Oct 28  2005 spitz_defconfig
-rw-rw-r-- 1 mlx mlx 17936 Oct 28  2005 versatile_defconfig

四、编译内核:

1、拷贝配置文件:

cd linux-2.6.14

cp -f arch/arm/configs/s3c2410_defconfig .config

2、make menuconfig

make menuconfig出错

(1)、Makefile:450: *** mixed implicit and normal rules: deprecated syntax
(2)、make: *** No rule to make target 'menuconfig'.  Stop.

针对(1),是由于我的系统的make工具太新,make的旧版规则已经无法兼容新版。按照以下方式,问题得到解决:

在makefile中修改:

config %config: scripts_basic outputmakefile FORCE

改为:

%config: scripts_basic outputmakefile FORCE

修改/ %/: prepare scripts FORCE(错)

为:%/: prepare scripts FORCE(对)

如果正确不做修改

修改后继续make menuconfig,又出现错误:

You must install ncurses-devel in order
>> to use 'make menuconfig'

安装:

sudo apt-get install libncurses5-dev

安装完毕后再次执行make menuconfig即可运行

选择 Load an Alternate Configation File 回车
               选择.config

选择 save an Alternate Configation File 回车

此处显示的是我们刚选择的defconfig文件路径,删除掉,改为linux 2.6.26 解压路径下的.config(XXXXXX/.config)

3、出现错误:arch/arm: Is a directory. Stop.

原因:ARCH            ?= arm这句话的arm后出现了空格

make zImage 开始编译,编译成功会生成zImage文件

出错

arch/arm/mm/alignment.c: In function 'proc_alignment_write':
arch/arm/mm/alignment.c:119: error: read-only variable '__r2' used as 'asm' output
arch/arm/mm/alignment.c:119: error: read-only variable '__r2' used as 'asm' output
arch/arm/mm/alignment.c:119: error: read-only variable '__r2' used as 'asm' output
arch/arm/mm/alignment.c:119: error: read-only variable '__r2' used as 'asm' output
scripts/Makefile.build:193: recipe for target 'arch/arm/mm/alignment.o' failed
make[1]: *** [arch/arm/mm/alignment.o] Error 1
Makefile:784: recipe for target 'arch/arm/mm' failed
make: *** [arch/arm/mm] Error 2

网上说是因为arm-linux-gcc版本过高导致的,用3.4.1版本。

五、下载2.6.37内核,按照上面的方式重新make:

报错

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/home/mlx/ArmLinux/linux-2.6.37/kernel/Makefile:139: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:914: recipe for target 'kernel' failed
make: *** [kernel] Error 2

解决:将kernel/timeconst.pl中第373行的defined()去掉只留下@val就可以了

继续make,报错:

drivers/leds/leds-h1940.c: In function 'h1940_greenled_set':
drivers/leds/leds-h1940.c:33: error: implicit declaration of function 'h1940_latch_control'
scripts/Makefile.build:250: recipe for target 'drivers/leds/leds-h1940.o' failed
make[2]: *** [drivers/leds/leds-h1940.o] Error 1
scripts/Makefile.build:380: recipe for target 'drivers/leds' failed
make[1]: *** [drivers/leds] Error 2
Makefile:914: recipe for target 'drivers' failed
make: *** [drivers] Error 2

直接把h1940_latch_control()函数注销掉,具体修解决方法还不知道。

继续make,完成后生成了vmlinux。

arm-linux-gcc4.4.3编译s3c2410平台linux内核的更多相关文章

  1. Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)

    参考链接: MXE.>大多数程序都是在windows平台下开发的程序.windows 在现实中也是绕不过的一个系统平台,做为受过几年VC,MFC”虐待”的程序员,在做为一个程序员之前是一位Lin ...

  2. 驱动开发学习笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇

    驱动开发读书笔记. 0.04  linux 2.6 platform device register 平台设备注册  1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentatio ...

  3. Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件

    Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统  nsswitch.conf配置文件 朋友们,今天我对你们说,在此时此刻,我们虽然遭受种种困难和挫折,我仍然有一个梦 ...

  4. <摘录>Linux 环境下编译 0.11版本内核 kernel

    系统环境:Fedora 13 + gcc-4.4.5 最近在看<linux内核0.11完全注释>一书,由于书中涉及汇编语言的地方众多,本人在大学时汇编语言学得一塌糊涂,所以实在看不下去了, ...

  5. GCC-4.6.3编译linux2.6.32.12内核出现“重复的成员‘page’”错误的解决方法

    使用gcc4.6.3编译linux2.6.32.12内核出现错误如下: In file included from drivers/net/igbvf/ethtool.c:36:0: drivers/ ...

  6. 【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程

    原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一 ...

  7. 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发

    快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...

  8. [转载]Linux 环境下编译 0.11版本内核 kernel

    最近在看<.如果Clobber/Modify 为空,则其前面的冒号(:)必须省略. 2.如果Output,Input,Clobber/Modify都为空,Output,Input之前的冒号(:) ...

  9. linux下使用gcc编译运行C程序

    gcc(GNU Compiler Collection)是Linux下最常用的C语言编译器,是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.  在 ...

随机推荐

  1. layui-字体图标

    layui官网下载:GitHub:https://github.com/sentsin/layui/ layui官网首页-下载:http://www.layui.com/ layui-字体图标-官方网 ...

  2. 京东2015年应届生招聘笔试题(A)卷答案选择题部分

    1.操作系统死锁的必要条件(多选题):()   A.相互排斥条件   B.系统资源有限   C.进程调度不合理   D.环路等待条件 答:A,C,D 參考资料:http://blog.sina.com ...

  3. spring源码解析之IOC容器(一)

    学习优秀框架的源码,是提升个人技术水平必不可少的一个环节.如果只是停留在知道怎么用,但是不懂其中的来龙去脉,在技术的道路上注定走不长远.最近,学习了一段时间的spring源码,现在整理出来,以便日后温 ...

  4. gcc编译静态库和动态库

      今天要用到静态库和动态库,于是写了几个例子来巩固一下基础.hello1.c ———————————————————— #include <stdio.h>void print1(int ...

  5. 写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。) 给定一个表达式A,请返回一个bool值,代表它是否合法。

    这道题比较奇怪,它的匹配规则并不是我们平时想想的那种匹配规则,例如:平时的匹配规则是().{}.[]才能匹配,本题中(和} .].)都能匹配.所以做题时要好好审题.另外,本题中给的测试用例是错误的. ...

  6. C#游戏开发高速新手教程Unity5.5教程

    C#游戏开发高速新手教程Unity5.5教程 试读文档下载地址:http://pan.baidu.com/s/1slwBHoD C#是微软公布的高级程序设计语言.这门语言和C语言一样,已经成为了大学计 ...

  7. 限制UITextView的字数和字数监控,表情异常的情况和禁用表情

    限制UITextView的字数和字数监控,表情异常的情况和禁用表情   3523FD80CC4350DE0AE7F89A8532B9A8.png 因为字数占一个字符,表情占两个字符.你要是限制15个字 ...

  8. Java 并发随身记(一)之 Unsafe类

    最近在看Java并发相关的内容,需要自己整理整理,不然就生疏了.工作2年多,工作时一般注都是框架.消息这些内容,对基础内容比较忽视.闲话不说,既然是并发内容,首先先复习一下Unsafe的内容吧. Un ...

  9. 【BZOJ3319】黑白树 并查集

    [BZOJ3319]黑白树 Description 给定一棵树,边的颜色为黑或白,初始时全部为白色.维护两个操作:1.查询u到根路径上的第一条黑色边的标号.2.将u到v    路径上的所有边的颜色设为 ...

  10. 使用T4模板技术

    1.右键->添加->新建项,选择“文本模板” 2.修改代码为: <#@ template debug="false" hostspecific="fal ...