以前写的的都是一些如led数码管简单的驱动,今天在写linux lcd驱动的时候,将代码分成了几个模块,每个模块用一个.h和.c对应,最后在组合在一起。结果在编译时总是提示函数未定义,但是我明明包含了头文件。
make -C /home/longjun/linux-2.6.24.4 M=/home/longjun/arm2440/lcd_debug modules
make[1]: Entering directory `/home/longjun/linux-2.6.24.4'
Building modules, stage 2.
MODPOST 1 modules
WARNING: "sayHello" [/home/longjun/arm2440/lcd_debug/lcd.ko] undefined!
make[1]: Leaving directory `/home/longjun/linux-2.6.24.4'
最后找到了问题的根源是makefile出现了问题,于是将今天的收获记下来
新建a.h和a.c两个文件,用来测试
1、简单的在a.h文件中定义一个方法
#ifndef _A_H_
#define _A_H_
void sayHello(void);
#endif
2、在a.c中实现sayHello方法
#include"a.h"
void sayHello(void)
{
printk("hello world!\n");
}
3.这是lcd驱动的文件结构,所有的文件都放在一个目录下
. a.h lcd.c lcd.h Makefile types.h
.. framebuffer.c lcddrv.c lcdlib.c
a.c framebuffer.h lcddrv.h lcdlib.h