Fred Fedora wrote:
Rick,
Thanks for explaining. Is there some sample makefile which ahieves this
trick somewhere on teh web? I just downloaded ATMEL code from
sourceforge to find if they have some clues.
If you got the at76c503a sources, take a look at the Makefile in the
top directory. Essentially, it says:
It's a 2.4-style make if "/lib/modules/`uname -r`/build/Rules.make"
exists. If it doesn't exist, it's a 2.5/2.6 make
Simple enough. You'd have to look at the rest of the Makefile to see
what it does as far as picking up the right headers (HINT: it uses the
kernel Makefile to set things up by using "make -C" and setting the
"SUBDIRS" variable). This really isn't the forum for a tutorial on just
how the 2.6 kernel build scripts work.
*/Rick Stevens <rstevens@xxxxxxxxxxxxxxx>/* wrote:
Fred Fedora wrote:
> Rick,
> Thanks for the reply. Should the module code be physically located
> inside the kernel source tree(/usr/src/linux-kernel-version??)?
> I had a module built outside kernel tree on 2.4. Things compiled
OK. I
> want to check itout (using the same make commands) on 2.6 and I get
> bunch of errors.
> Is irq_vectors.h automatically picked by kernel using some variable?
If the module's source is designed correctly, it'll look for the kernel
headers it needs by looking at /lib/modules/`uname -r`/build. Under
2.4, this is generally a symlink to the actual kernel source directory.
In 2.6, it's typically a directory that contains all of the necessary
source (headers and whatnot) to build your module.
The trick is that the module MUST be designed with 2.6 in mind. A quick
search for the! file you have problems with lists four "irq_vectors.h"
files based on the basic system architecture, "mach-default",
"mach-visws, "mach-voyager" and "mach-pc9800". The module's Makefile
must understand this to grab the right file.
So providing the module is 2.6-aware, yes, you should be able to build
your module outside the kernel source tree. I know it works as I've
built several drivers that way (for example, the atmel driver for
atmel-based wireles LAN cards).
> */Rick Stevens /* wrote:
>
> Fred Fedora wrote:
> > Is module compilation diffrent for 2.6 kernel from 2.4? I am get
> tons of
> > erros.
> > Any hints?
> > (irq_vectros.h not found etc. are my errors).
>
> 2.6 kernel building is a lot different. Your best bet is to do it
> from ground zero:
>
> # cd /usr/src/linux-whatever
> # make mrproper
> # make xconfig -or- m! ake gconfig -or- make menuconfig
> (load an existing config file or set things up as you wish)
> (save this new config)
> # make
----------------------------------------------------------------------
- Rick Stevens, Senior Systems Engineer rstevens@xxxxxxxxxxxxxxx -
- VitalStream, Inc. http://www.vitalstream.com -
- -
- Millihelen, adj: The amount of beauty required to launch one ship. -
----------------------------------------------------------------------