当前位置: 技术问答>linux和unix
编写ARM上Linux驱动程序出错,请教高手要写些什么结构
来源: 互联网 发布时间:2016-01-19
本文导语: 我弄了一个最简单的驱动程序编译完了在PC机上可以运行,用交差编译器和ARM C语言库编译后到ARM上运行,提示:Invalid module format(-1):Exec format error,请问我的程序错在哪里,要改些什么结构?(我的开发板是Intel270,...
我弄了一个最简单的驱动程序编译完了在PC机上可以运行,用交差编译器和ARM C语言库编译后到ARM上运行,提示:Invalid module format(-1):Exec format error,请问我的程序错在哪里,要改些什么结构?(我的开发板是Intel270,OS是BusyBox Linux).谢谢!
#ifndef __KERNEL__
# define __KERNEL__
#endif
#ifndef MODULE
# define MODULE
#endif
#include
#include
MODULE_LICENSE("GPL");
#ifdef CONFIG_SMP
#define __SMP__
#endif
#include /* printk()在这个文件里 */
static int init_module()
{
printk("Hello,test World!n");
return 0; /* 如果初始工作失败,就返回非0 */
}
static void cleanup_module()
{
printk("Bye!n");
}
#ifndef __KERNEL__
# define __KERNEL__
#endif
#ifndef MODULE
# define MODULE
#endif
#include
#include
MODULE_LICENSE("GPL");
#ifdef CONFIG_SMP
#define __SMP__
#endif
#include /* printk()在这个文件里 */
static int init_module()
{
printk("Hello,test World!n");
return 0; /* 如果初始工作失败,就返回非0 */
}
static void cleanup_module()
{
printk("Bye!n");
}
|
提示编译的目标格式不对啊
是不是编译也要相应的arm内核源代码?
是不是编译也要相应的arm内核源代码?
|
很显然,是你的MAKEFILE没对
再者,编译是需要arm-linux内核源码的,因为需要头文件
再者,编译是需要arm-linux内核源码的,因为需要头文件
|
按提示是你编译的问题,不是目标机器所认识的格式
|
你开发板上的内核版本(配置)和你交叉编译环境的内核版本(配置)不一致吧。
你需要把用目标板上的系统代码和lib拿来交叉编译才行。
你需要把用目标板上的系统代码和lib拿来交叉编译才行。
|
请用静态编译 makefile 里加 -static
|
这是我在用的一个Makefile
ifeq ($(KERNELRELEASE),)
KERNELDIR ?=/linuxsrc
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
else
obj-m = mymodule
endif
不过在使用以前要设置几个环境PATH,ARCH和CROSS_COMPILE,而且Makefile里面的linux源代码树是用交叉编译环境编译过的,要不然会缺少文件。然后直接make就K.O.了。
Good luck!
ifeq ($(KERNELRELEASE),)
KERNELDIR ?=/linuxsrc
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
else
obj-m = mymodule
endif
不过在使用以前要设置几个环境PATH,ARCH和CROSS_COMPILE,而且Makefile里面的linux源代码树是用交叉编译环境编译过的,要不然会缺少文件。然后直接make就K.O.了。
Good luck!
|
请教:我在FC6 下编译,编译在FC6 下的模块,库文件用的是 /usr/src/kernels/2.6.18-1.2798.fc6-i686/include/ ,编译的时候,提示很多库文件里面有很多错误,自己去下了个Linux 2.6.18内核,也是一样很多错误,,
库文件要怎么设置?
库文件要怎么设置?
|
去下载<<LINUX设备驱动程序>>第三版中的例程源代码,稍改一下就OK了,至于下载地点,你去看一看那本书的前言,里面说了源码的下载地址