Re: Simple module, but won't build
From: Wolfgang Denk <hidden>
Date: 2004-05-04 20:19:18
In message [ref] you wrote:
Hi Wolfgang, Wolfgang Denk wrote:quoted
Seems you are missing to include some necessary header files and/or to provide the necessary compiler options.I am taking a driver I wrote for a 2.4.2 kernel, built with 2.95.x compiler and trying to port it to 82xx from 8xx and use the new ELDK. Since it is so simple, it just writes to a mem mapped I/O port to set some LED's on/off, I assumed it would be pretty simple. But alas, that was probably a bad assumption on my part. The main module includes the following:
Insert: #include <linux/kernel.h> #include <linux/init.h>
linux/module.h linux/fs.h
Probably needed: #include <asm/types.h>
asm/io.h asm/uaccess.h in that order. I have grep'ed for CONFIG_KERNEL_START and CONFIG_TASK_SIZE and the only place I can find them defined is in the kernel source .config (and default config files for each board). Not in any of the header files.
Grep after configuring the kernel, and you should find them in include/linux/autoconf.h:#define CONFIG_KERNEL_START 0xc0000000 include/config/kernel/start.h:#define CONFIG_KERNEL_START 0xc0000000 resp. include/linux/autoconf.h:#define CONFIG_TASK_SIZE 0x80000000 include/config/task/size.h:#define CONFIG_TASK_SIZE 0x80000000
Maybe I am sposed to #define them myself - I tried that and it worked - but would like a more automagic solution if there is one!
There is no magic involved ;-)
Command line options are: -D__KERNEL__ -DMODULE -Wall -fno-builtins -O -c
This is not good either. You may try running a "make modules" in you kernel source directory and see what CFLAGS are needed; for me this looks for example like this: CFLAGS="-D__KERNEL__ -I/work/TQM860L/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -I/work/TQM860L/arch/ppc -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring -DMODULE" Some of the options (like -msoft-float) are not optional at all ;-) Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de If A equals success, then the formula is A = X + Y + Z. X is work. Y is play. Z is keep your mouth shut. - Albert Einstein ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/