On 1/4/06, Sam Ravnborg <sam@xxxxxxxxxxxx> wrote: > On Wed, Jan 04, 2006 at 10:23:56AM -0800, anil dahiya wrote: > > hello > > I want to make kernel module dummy.ko using multiple > > .c and .h files. In short i am telling .c and .h files > > with directory structure > > > > 1> dummy.ko should made be using module1.ko and > > module2.o (i.e > > module2.o uses module1.ko to make dummy.ko) > > You cannot make a module with a module as input. > It does not make sense. > Either you create a module or you don't. > > So you will create following modules: > module1.ko + module2.ko > > Alternatively you create one module but using the individual .o files as > input which is more likely what you want - correct? > > Then your Kbuild file would look like this: > > Kbuild: > obj-m := dummy.o > dummy-y := module1/a1/a1.o > dummy-y += module1/a2/a2.o > dummy-y += module2/b1/b1.o > > # Tell where to find .h files > EXTRA_CFLAGS := -I$(src)/include > > And to compile your module: > make -C $PATH_TO_KERNEL_SRC M=`pwd` > > > I assume you already read Documentation/kbuild/modules.txt - otherwise > please do so too. > > Please include the source or provide an URL to the src if you need more > help. > > Sam > > > > > > > 2> module1.ko made using a1/a1.c & a2/a2.c and both > > .c file > > use /home/include/a.h > > 3> module2.o should made using b/b1.c which use > > use /home/module2/include/b.h > > > > Suggest me tht should make i make module2.o or > > module2.ko and then combine it with module1.o to make > > dummy.ko > > > > > > /home/------ > > |_ include _ > > | | > > | a.h > > | > > |___module1_ > > | |__ a1 ____ > > | | | > > | | a1.c > > | | > > |__ a2 ____ > > | | | > > | | a2.c > > | > > |___ moudule2_ > > | | > > | |__include _ > > | | | > > | | b.h > > | |___b1__ > > | | > > | b1.c > > > > > > Looking forward for ur reply > > thanks in advance > > ---- Anil > > hi, Anil just put the names of your .c files where I have mentioned. Hope this will work #START OF MAKEFILE=========================================== TARGET = [Your Driver Name] OBJS = [Your Driver Name (same as above)].o MDIR = drivers/misc EXTRA_CFLAGS = -DEXPORT_SYMTAB CURRENT = $(shell uname -r) KDIR = /lib/modules/$(CURRENT)/build PWD = $(shell pwd) DEST = /lib/modules/$(CURRENT)/kernel/$(MDIR) obj-m := $(TARGET).o $(TARGET)-objs := [Names of your .c files with .o extension] [for example file1.o file2.o ETC] default: make -C $(KDIR) SUBDIRS=$(PWD) modules $(TARGET).o: $(OBJS) $(LD) $(LD_RFLAG) -r -o $@ $(OBJS) ifneq (,$(findstring 2.4.,$(CURRENT))) install: su -c "cp -v $(TARGET).o $(DEST) && /sbin/depmod -a" else install: su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a" endif clean: -rm -f *.o *.ko .*.cmd .*.flags *.mod.c -include $(KDIR)/Rules.make # END OF MAKEFILE======================================== > > > > > > __________________________________________ > > Yahoo! DSL ? Something to write home about. > > Just $16.99/mo. or less. > > dsl.yahoo.com > > > > - > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > > the body of a message to majordomo@xxxxxxxxxxxxxxx > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > Please read the FAQ at http://www.tux.org/lkml/ > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/