QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1355|回复: 0

多程序驱动如何编译进内核?

[复制链接]
发表于 2004-6-23 09:48:24 | 显示全部楼层 |阅读模式
我做了一个驱动,它包括两个程序:a.c和b.s(arm-linux-gcc和arm-linux-as编译)
如果驱动是一个程序的话,编译进内核只需修改....../drviers/char/Makefile和...../drivers/char/Config.in即可!


当驱动为多个文件时,应该在.../drivers/char下建一个子目录:mkdir  li
把a.c,b.s考到li下,在编写一个Makefile
O_TARGET:=CS5341.o
export_objs:=fiq.o     (这是什么意思?)
list_multi:=cs53.o
cs53_objs:=Cs5341.o fiq.o
obj_$(CONFIG_CS5341)+=cs53.o
include $(TOPDIR)/Rules.make
cs53.o:$(cs53_objs) $(LD)$(LD_RFLAG)-r -o $@ $(cs53_objs)


为了把它编译进内核,我做了以下改动:
1、改Config.in
2、改....../drviers/char/Makefile
     mod_subdirs:=............. li
     subdir_$(CONFIG_CS5341) +=li
3、改/usr/src/arm/linux/Makefile
    DRIVERS_$(CONFIG_CS5341)+=/drviers/char/li/CS5341.o


我编译了一下,出了好几个错:
/usr/local/arm/2.95.3/bin/arm-linux-as???"_ASSEMBLY_"
make[4]:***[fiq.o] Eorro 1
make[4]:leaving directory 'usr/src/arm/linux/drivers/char/li'
make[3]:***[first_rule] Eorro2
make[3]:leaving directory 'usr/src/arm/linux/drivers/char/li'
make[2]:***[_subdir_li] Eorro 2
make[2]:leaving directory 'usr/src/arm/linux/drivers/char'
make[1]:***[_subdir_char] Eorro 2
make[1]:leaving directory 'usr/src/arm/linux/drivers'
make:***[_dir_drivers] Eorro 2


是不是哪儿忘了修改了,还是li下的Makefile写的不对?


另:我已经用模块加载的方式编译过了,生成了目标文件object.o,没出错,只是insmod -f object.o时提示:ELF file object.o not for this architecture(为什么哪?)
问了好多人都没得到正解,不知这有没有人研究过?
多谢了!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-21 22:18 , Processed in 0.035267 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表