Skip to contentSkip to conversation

Problem in EXPORT_SYMBOL.. Please Help!

DISCUSSION Dhirendra Pal Singh 2 participants 2 messages Dec 24, 2002 – Dec 25, 2002

lore
Share & tools
lore
#0 lore raw

Hi All
I am trying to resolve the problem of EXPORT_SYMBOL. I have raised this question on newbies kernel list but no one replied. Hence I am posting it here. I am using kernel 2.4.18-14. Below is the listing of a simple test code.

**************************************
/*main.c*/

#include <linux/kernel.h>
#include <linux/module.h>

#if CONFIG_MODVERSION == 1
#define MODERVSION
#include <linux/modversions.h>
#endif

int print_func()

{
	printk("Entry point.\n");
	return 0;
}

EXPORT_SYMBOL(print_func);

int init_module()

{
	print_func();
	return 0;
}

void cleanup()

{
	printk("End of story.\n");
}

********************************************

********************************************
/*Makefile*/

export-objs := main.o
CC=gcc
MAKE = make
KERNELDIR = /usr/src/linux-2.4.18-14
MODCFLAGS := --save-temps -Wall -D__KERNEL__ -DMODULE -DLINUX -DMODVERSIONS

main.o: main.c

		$(CC) $(MODCFLAGS) -I$(KERNELDIR)/include -c main.c

clean:

	rm -fr *.o *.i *.s

***********************************************

And on compiling the error is as follows...

gcc --save-temps -Wall -D__KERNEL__ -DMODULE -DLINUX -DMODVERSIONS -I/usr/src/linux-2.4.18-14/include -c main.c main.c:15: parse error before "this_object_must_be_defined_as_export_objs_in_the_Makefile"
main.c:15: warning: type defaults to int' in declaration of this_object_must_be_defined_as_export_objs_in_the_Makefile' main.c:15: warning: data definition has no type or storage class

The error says export_ojbs must be defined. As you can see I have already defined them in the Makefile.

Pleaes help. I am kind of stucked in my project.

Thanks in advance..
Dp

make: *** [main.o] Error 1

#1 lore raw
Quoted 1 line · Dhirendra Pal Singh

Hi All

[Problem with exported symbol]

Kai G. posted this receipt the other day:
------------
Well, you can do

cd my_module
echo "obj-m := my_module.o" > Makefile
vi my_module.c
make -C <path/to/kernel/src> SUBDIRS=$PWD modules

That's not too bad (and basically works for 2.4 as well)
------------

That should catch any compiletime problems. Just stick in:
echo "export-objs := my_module.o" >> Makefile
To mark it a module with exported symbols.

And for 2.4 you need to include Rules.make:
echo "include path/to/Rules.make"

HTH,
Sam