Problem in EXPORT_SYMBOL.. Please Help!
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
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