[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: module compilation on 2.6



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




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]