This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, I am trying to compile a module. I don't know how to make .ko file. All examples, i have seen are a little confusing. I have tried to compile a very simple device driver. The .o file I compile cannot be loaded into the kernel, because the format is wrong. How can I compile a .ko file. I read the faq http://www.faqs.org/docs/kernel/ , but it did not help either. Thanks for reading /* ?hello-1.c - The simplest kernel module. */ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include <linux/module.h> ?/* Needed by all modules */ #include <linux/kernel.h> ?/* Needed for KERN_ALERT */ #include <linux/vermagic.h> MODULE_INFO(vermagic, VERMAGIC_STRING); #undef unix struct module __this_module __attribute__((section(".gnu.linkonce.this_module"))) = { ?.name = __stringify(KBUILD_MODNAME), ?.init = init_module, #ifdef CONFIG_MODULE_UNLOAD ?.exit = cleanup_module, #endif }; int init_module(void) { ? ?printk("<1>Hello world 1.\n"); ? ? ? ? ? ?// A non 0 return means init_module failed; module can't be loaded. ? ?return 0; } void cleanup_module(void) { ? printk(KERN_ALERT "Goodbye world 1.\n"); } ? ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// Makefile /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// # Makefile for the kac device driver # Comment/uncomment the following line to enable/disable debugging #DEBUG = y ifeq ($(DEBUG),y) ? DEBFLAGS = -O -g -DDEBUG_FLAG else ? DEBFLAGS = -O2 endif CC = /arm9/crosstool/gcc-3.4.4-glibc-2.3.5/arm-linux/bin/arm-linux-gcc MAKE = CFLAGS = -v -O2 -DMODULE -D__KERNEL__ ${WARN} ${DEBFLAGS} ${INCLUDEDIR} ${INCLUDEASMARMDIR} ${INCLUDELINUXDIR} WARN ? ?:= -W -Wall -Wstrict-prototypes -Wmissing-prototypes INCLUDEDIR = -I/atmel.kernel.2.6.12/linux-2.6.14/include INCLUDEASMARMDIR = -I/atmel.kernel.2.6.12/linux-2.6.14/include/asm-arm INCLUDELINUXDIR = -I/atmel.kernel.2.6.12/linux-2.6.14/include simple.o: simple.c ????????$(CC) $(CFLAGS) simple.c clean: ????????rm ./*.o ????????rm ./*~ ????????rm ./*.ko /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.org
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |