我想在我的交叉编译环境中写一个最简单的驱动?请问如何编译?
/*
* $Id: hello.c,v 1.5 2004/10/26 03:32:21 corbet Exp $
*/
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE( "Dual BSD/GPL ");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n ");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n ");
}
module_init(hello_init);
module_exit(hello_exit);
就比如这个来自LDD3的源代码
我的交叉编译工具是mips-linux-g++
请问这样编译或者写makefile文件
------解决方案--------------------CROSS_COMPILE=/home/guys/starwave-ppc/staging_dir_powerpc/bin/powerpc-linux-uclibc-
CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld
RM = rm
KMOD = hello
LINUX = /home/guys/starwave-ppc/build_powerpc/linux
SYS_INC = /home/guys/starwave-ppc/staging_dir_powerpc/bin/../lib/gcc/powerpc-linux-uclibc/3.4.6/include
CINCS = -I . -I include -I inc -I $(LINUX)/include -I $(LINUX)/arch/ppc \
-I $(LINUX)/arch/ppc/include
CFLAG = -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common -ffreestanding -O2 \
-fomit-frame-pointer -Iarch/ppc -msoft-float -pipe -ffixed-r2 \
-mmultiple -mstring -Wa,-maltivec -Wdeclaration-after-statement
DFLAGS = -DMODULE -DKBUILD_BASENAME=$(KMOD) -DKBUILD_MODNAME=$(KMOD)
CFLAGS = -m32 -Wp,-MD,.$(KMOD).o.d \
-nostdinc -isystem $(SYS_INC) \
-D__KERNEL__ $(CINCS) $(CFLAG)
SRCS = $(KMOD).mod.o $(KMOD).o
OBJS = $(SRCS)
all: $(KMOD)
@echo "Look for $ <.ko please "
%.o: %.c
$(CC) $(CFLAGS) $(DFLAGS) -c -o $@ $ <
$(KMOD): $(SRCS)
$(LD) -m elf32ppc -r -o $@.ko $(KMOD).mod.o $(KMOD).o
clean:
$(RM) -f $(OBJS) *.o
编译链改成你的路径,其他各项也自己对号入座。
------解决方案--------------------这也算复杂吗????
如果连这种MAKEFILE都看不懂,还是回去补一补MAKEFILE,GCC编译参数,脚本语言这些基础知识吧
所以在写驱动之前学会使用LINUX与学会LINUX应用编程是有好处的