linux内核裁剪,编译,移植---目标板FS2410----未完成

来源:互联网 发布:淘宝联盟没有返利 编辑:程序博客网 时间:2024/05/09 04:45

现在21:20,争取今天把内核烧进去,应该不难吧。。。。。

先看看内核的裁剪与编译。

 

基本步骤:

1.建立交叉编译环境,这步在之前已经完成,使用交叉编译工具链:arm-linux-gcc-4.4.3.tar.gz

2.修改Makefile,这一步查看资料,写着:

修改内核目录树根下的Makefile时,可先指明交叉编译器。设计时,可向Makefile中添加如下内容:
    ARCH ?=arm
    CROSS_COMPILE?=arm-linux-然后设置PATH环境变量,使其可以找到其交叉编译工具链,然后运行vi~/.bashrc,再添加如下内容:
    export PATH=/usr/local/arln—linux一3.4.4/bin:$PATH

但是,看不明白,首先,在Makefile中已经存在:

ARCH            := arm
CROSS_COMPILE   := $(shell if [ -f .cross_compile ]; then \
                                cat .cross_compile; \
                                fi)

 

不知道资料描述的意思是直接添加它说的内容,还是对下边的Makefile已存在的部分进行修改,继续查找资料

 

好,明白了,就是后一种情况,这里对原Makefile的修改为

ARCH            := arm
CROSS_COMPILE   := $(shell if [ -f .cross_compile ]; then \
                                cat .cross_compile; \
                                fi)

 因为这里要写CROSS_COMPILE :=后跟arm-linux-gcc的安装路径,但我这时候我先还没有安装,所以接下来又是它的安装。

查询资料,http://blog.csdn.net/authorowen/article/details/7338293,介绍方法非常详细,只是,我的最终还是通过重启电脑,才算安装成功。

我的arm-linux-gcc的最终安装目录是/usr/local/arm/4.4.3,所以上面的修改为

ARCH            := arm
CROSS_COMPILE   := /usr/local/arm/4.4.3/bin/arm-linux-

看到有的资料说,CROSS_COMPILE   :=arm-linux-,这样就需要设置环境变量,还不如直接写路径的好。明白了。

 

3.Makefile设置好了,就可以make menuconfig了

4.make menuconfig之后,输入命令make clean,make dep,make zImage

后出现以下错误:

1.

include/asm is a directory but a symlink was expected

解决方法:

删除源码根目录下的include/asm,文件夹,问题解决。

分析:

原因:linux/include/asm 文件夹是内核编译过程中创建的,创建结果就是一个指向文件夹asm-arm的链接,表明该系统的平台是arm架构的,而编译系统内核之前,是没有asm这个链接的,所以,在编译过程中,创建该链接时文件名字与asm文件夹的名字发生冲突,报错。http://hi.baidu.com/percy_place/item/18f2b10c6aae9bd972e67641

2.

  CHK     include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' is up to date.
  CHK     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-arm
ln: creating symbolic link `include/asm': Read-only file system

经查询资料显示,出该错误的原因是由于未将linux源码从windows的共享目录拷贝到linux下的缘故,,对不对先试一下。

 先将linux源码拷贝到/home/MY_ZILIAO目录下,然后,make zImage。果然是这样,原因在于上面的错误提示说现在是在建立各个文件间的索引关系,而实际上源码是放在windows下的,这就导致这个索引关系建立时出现错误。所以,不行。

3.又出现了第三个错误,明天再整。歇了。

arch/arm/mach-s3c2410/s3c2410.c: In function 's3c2410_setup_clocks':
arch/arm/mach-s3c2410/s3c2410.c:105: error: too few arguments to function 's3c24xx_setup_clocks'
arch/arm/mach-s3c2410/s3c2410.c: In function 's3c2410_init_clocks':
arch/arm/mach-s3c2410/s3c2410.c:110: error: implicit declaration of function 's3c24xx_register_baseclocks'
make[1]: *** [arch/arm/mach-s3c2410/s3c2410.o] Error 1
make: *** [arch/arm/mach-s3c2410] Error 2

 

 

内核编译暂停,因为开发板无法与主机ping通,网络配置不存在问题,怀疑是uboot出错,所以需要重新编译,烧写uboot。

原创粉丝点击