arm-linux-gcc4.4.3编译s3c2410平台linux内核
写在前面: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内核的更多相关文章
- Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)
参考链接: MXE.>大多数程序都是在windows平台下开发的程序.windows 在现实中也是绕不过的一个系统平台,做为受过几年VC,MFC”虐待”的程序员,在做为一个程序员之前是一位Lin ...
- 驱动开发学习笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇
驱动开发读书笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentatio ...
- Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件
Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件 朋友们,今天我对你们说,在此时此刻,我们虽然遭受种种困难和挫折,我仍然有一个梦 ...
- <摘录>Linux 环境下编译 0.11版本内核 kernel
系统环境:Fedora 13 + gcc-4.4.5 最近在看<linux内核0.11完全注释>一书,由于书中涉及汇编语言的地方众多,本人在大学时汇编语言学得一塌糊涂,所以实在看不下去了, ...
- 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/ ...
- 【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程
原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一 ...
- 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...
- [转载]Linux 环境下编译 0.11版本内核 kernel
最近在看<.如果Clobber/Modify 为空,则其前面的冒号(:)必须省略. 2.如果Output,Input,Clobber/Modify都为空,Output,Input之前的冒号(:) ...
- linux下使用gcc编译运行C程序
gcc(GNU Compiler Collection)是Linux下最常用的C语言编译器,是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序. 在 ...
随机推荐
- javascript判断智能终端信息
< script type = "text/javascript" > /* * 智能机浏览器版本信息: * */ var browser = { versions: ...
- <LeetCode OJ> 141 / 142 Linked List Cycle(I / II)
Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without using ex ...
- 手把手实现andriod应用增量升级
近期研究了android应用增量升级的应用.当中用到了android NDK编程,先说下为什么要使用增量升级.当我们的应用达到一定大小的时候,比方眼下有30M.假设新版本号35M仅仅是添加了几个功能, ...
- 11-利用session校验图片认证码
/****************************************************************产生随机验证码的servlet******************** ...
- 深度解析 | 秒懂AI+智慧手机实践
阅读数:17 随着人工智能的概念越来越深入人心,智慧化生活和对应的智慧化终端体验也吸引越来越多的目光.可以想见,人工智能会深刻改变终端产业,但目前也面临各种挑战和问题.此前,在南京软件大会上,华 ...
- 计算两个GPS坐标点的距离
计算两个GPS坐标点的距离,第一个参数是第一个点的维度,第二个参数是第一个点的经度 http://yuninglovekefan.blog.sohu.com/235655696.html /** * ...
- iOS自己定义对象保存到本地文件
我是将聊天记录存到本地,里边用到了自己定义的对象.把数据转成Data格式存到本地.在转Data格式的时候报错了.这时候须要先将自己定义对象进行归档才干够转Data格式. 方法例如以下: 一.在.h文件 ...
- 使用T4模板为EF框架添加数据库实体注释
网上有一个解决方法如下: http://www.cnblogs.com/stone_w/archive/2012/10/25/2738345.html 不过我试了下没解决太麻烦了 而且一旦EF要重新生 ...
- 【BZOJ3992】[SDOI2015]序列统计 NTT+多项式快速幂
[BZOJ3992][SDOI2015]序列统计 Description 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属 ...
- EasyNVR H5无插件摄像机直播解决方案前端解析之:videojs的使用
video.js的基本使用方法 一.videojs的初始化加载 videojs初始化加载分为两中 1.标签式加载 在引入videojs加载文件的前提下,可以在video标签中添加属性值"da ...