4.3.2编译器重编译linux2.6.37 (支持EABI)流程及问题记录

来源:互联网 发布:类似哔哩哔哩的软件 编辑:程序博客网 时间:2024/06/05 10:47
 

平台工具及其版本

宿主机: Windows xp;Vmware7.1.3build-324285;虚拟机Ubuntu10.10

目标平台:工装(s3c2440处理器)256M Nand Flash,64M SDRAM,2MNOR Flash
交叉开发环境:arm-linux-xxx-4.3.2,支持EABI
linux kernel版本:2.6.37

因使用3.4.1交叉编译环境编译应用程序时常出现某些故障,所以决定更换4.3.2版编译器。从而内核和文件系统也得使用4.3.2编译器重新编译。以下内容并不全面,仅记录了本人所遇见的重要问题。现将内核重编译流程及遇到的问题记录如下:

一、安装4.3.2版交叉编译环境

将交叉编译环境安装到/usr/local/arm/4.3.2目录下。在/etc/profile末尾加环境变量

exportPATH="/usr/local/arm/4.3.2/bin:$PATH"

这里有个问题要强调下:arm/4.3.2/bin目录下的编译指令arm-linux-gcc和arm-linux-g++是两个shell脚本。内容如下:

#!/bin/bash

execarm-none-linux-gnueabi-gcc -march=armv4t $*

#!/bin/bash

execarm-none-linux-gnueabi-g++ -march=armv4t $*

可以发现编译指令仍是EABI类型的,并且指定了运行平台类型为armv4t。注意:使用不同的处理器时,应当注意此处的平台类型是否合适。

二、内核源码重编译

源码拷贝自先前3.4.1编译好的文件,

1、修改“Makefile”文件

183 行“ARCH?=(SUBARCH)” 修改为“ARCH ?= arm”

184 行“CROSS_COMPILE ?= ” 修改为“CROSS_COMPILE      ?=/usr/local/arm/4.3.2/bin/arm-linux-”

此时就是让编译器使用exec arm-none-linux-gnueabi-***  -march=armv4t $*指令编译内核。

2、make clean

进入内核源码根目录下执行make clean清除先前编译的目标文件及可执行文件。

3、make menuconfig

重新配置相关选项。必须选中该项以支持EABI方式编译内核

Kernel Features
[ ] Use the ARM EABI to compile the kernel

将它选中后自动多出下面一行

[*] Use the ARM EABIto compile the kernel
[*]  Allow old ABI binaries to run with this kernel (EXPERIMENTAL)(NEW) 

4、编译内核

进入内核源码根目录下执行make zImage,完成后在/arch/arm/boot/目录下就生成了zImage内核可执行文件。

详细流程可参考:

http://mail.ustc.edu.cn/~lizhijie/TQ2440/linux2.6.31-porting-to-TQ2440.html

原创粉丝点击