module compilation on 2.6

Rick Stevens rstevens at vitalstream.com
Fri Jun 18 23:51:15 UTC 2004


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 at vitalstream.com>/* 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 at vitalstream.com -
- VitalStream, Inc.                       http://www.vitalstream.com -
-                                                                    -
- Millihelen, adj: The amount of beauty required to launch one ship. -
----------------------------------------------------------------------





More information about the fedora-list mailing list