LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 05-04-2006, 06:17 PM   #1
Last Attacker
Member
 
Registered: Jun 2004
Location: South Africa
Distribution: Ubuntu
Posts: 120

Rep: Reputation: 15
Kernel module with multiple source files compilation problem


Hi,
I have a problem with compiling my kernel module.
At this stage its a plain character device that takes input which is piped
through to the /dev/my_device file and when you cat /dev/my_device it returns
the same data.
To have 1 file for my my_device.ko file works fine but if I have multiple
source files it compiles but with warnings stating for example:

Code:
*** Warning: "copyData" [/home/la/compr/dyn_buffer.ko] undefined!
*** Warning: "nullData" [/home/la/compr/dyn_buffer.ko] undefined!
*** Warning: "dynCleanBuffer" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynInitBuffer" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynAddChunk" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynMakeBigBuffer" [/home/la/compr/compr.ko] undefined!
I have compr.c, dyn_buffer.c and utils.c

This is my makefile:
------------------------

Code:
KERNELDIR := /tmp/linux-2.6.10

obj-m += compr_dev.o
compr_dev-objs := dyn_buffer.o utils.o compr.o

.PHONY: all clean

all: 
        $(MAKE) -C $(KERNELDIR) M=`pwd` modules ARCH=um

clean:
        rm -f *.o *.ko *.mod.c

It is for the 2.6.10 UML Linux Kernel.
Here is an abstract view of my source files:

compr.c :
------------

Code:
#include "compr.h"
#include "dyn_buffer.h"

/**     If we ever need to check if we're
 *      using a specific kernel version 
 */
#ifndef KERNEL_VERSION
#define KERNEL_VERSION(a,b,c) ((a) * 65536 + (b) * 256 + (c))
#endif

#include <asm/uaccess.h>        // for put_user
#include <linux/vmalloc.h>  // for vmalloc
#include <linux/proc_fs.h>  // for proc file system
#include <linux/sched.h>    // for sleeping

#define DEVICE_NAME "compr"
#define COMPR_MAJOR 240

//static struct proc_dir_entry *compr_proc_entry;

static struct sDynBuffer compr_buffer;

static struct cdev compr_cdev;

/**     This function is called whenever a process
 *      attempts to open the device file 
 */
static int compr_open(struct inode *inode, struct file *file)
{
        return 0;
}

/**     This function is called when a process closes the
 *      device file.
 */
static int compr_release(struct inode *inode, struct file *file)
{
        return 0;
}

/**     This function is called whenever a process which
 *      have already opened the device file attempts to
 *      read from it.
 */
static ssize_t compr_read( struct file *file,
                           char *buffer,                // The buffer to fill with data
                           size_t length,               // The length of the buffer
                           loff_t *offset)              // Our offset in the file
{
        ...
}

/**     This function is called when somebody tries to write
 *      into our device file.
 */
static ssize_t compr_write( struct file *file,
                            const char *buffer, // The buffer
                            size_t length,              // The length of the buffer
                            loff_t *offset)             // Our offset in the file
{
        ...
}

void __get_user_X(void)
{
}
void __put_user_bad(void)
{
}

int compr_ioctl(struct inode *inode,
                struct file *file,
                unsigned int ioctl_num,         // The number of the ioctl
                unsigned long ioctl_param)      // The parameter to it
{
        return -EINVAL;
}

struct file_operations compr_ops =
{
    .read    = compr_read,
    .write   = compr_write,
    .ioctl   = compr_ioctl,
    .open    = compr_open,
    .release = compr_release,
};

/** Initialize the module */
//static int __init compr_init()
int init_module()
{
        ...
}

/** Cleanup - undid whatever init_module did */
void cleanup_module()
{
...
}
compr.h
----------

Code:
#ifndef _COMPR_H
#define _COMPR_H
        
        #include <linux/init.h>
        #include <linux/kernel.h>
        #include <linux/module.h>
        #include <linux/cdev.h>
        #include <linux/fs.h>   // character device definitions
        #include <linux/ioctl.h>
        #include <linux/types.h>
        
        #define COMPR_GET_STATUS                _IO('M', 0)
        #define COMPR_SET_COMPRESS              _IO('M', 1)
        #define COMPR_SET_DECOMPRESS    _IO('M', 2)
        #define COMPR_SET_ALGO                  _IO('M', 3)
        #define COMPR_GET_ALGO                  _IO('M', 4)
#endif

dyn_buffer.c:
-----------------

Code:
#include "dyn_buffer.h"

int dynInitBuffer(struct sDynBuffer *dbuf)
{
        ...
}

int dynCleanBuffer(struct sDynBuffer *dbuf)
{
        ...
}

//Appends chunk buffers from the speified
//given index.
//Returns the number of chunks created.
static int dynAddNumChunks(struct sDynBuffer *dbuf, int from_index, int 
amount)
{
        ...
}

int dynAddChunk(struct sDynBuffer *dbuf, char *buf, size_t size)
{
        ...
}

char *dynMakeBigBuffer(struct sDynBuffer *dbuf, size_t *size)
{
        ...
}
dyn_buffer.h:
----------------

Code:
#ifndef _DYNAMIC_BUFFER_H
#define _DYNAMIC_BUFFER_H
        
        #include <linux/types.h>
        #include <linux/vmalloc.h>
        
        #include "utils.h"
        
        #define CHUNK_SIZE      4096
        #define INIT_SIZE       10
        
        //Error symbols
        #define ERROR_MEM       1       /** Couldn't allocate memory for buffer */
        
        /**     A structure holding valuable
         *      information on a dynamic buffer.<br>
         *      <b>NOTE :</b> Do not alter anything
         *      in this structure!
         */
        struct sDynBuffer
        {
                size_t actual_size;     /** Size of data in dynamic buffer */
                int size;                       /** Amount of data chunks */
                int index;                      /** Current chunk index */
                int offset;                     /** Current place in chunk */
                char **data;            /** Array of chunk buffers */
        };
        
        #define DYN_BUFFER_SIZE(BUFFER) (BUFFER.actual_size)
        
        int dynInitBuffer(struct sDynBuffer *dbuf);
        int dynCleanBuffer(struct sDynBuffer *dbuf);
        int dynAddChunk(struct sDynBuffer *dbuf, char *buf, size_t size);
        char *dynMakeBigBuffer(struct sDynBuffer *dbuf, size_t *size);
        
#endif //_DYNAMIC_BUFFER_H
utils.h:
--------
Code:
#ifndef _UTILS_H
#define _UTILS_H
        
        #include <linux/types.h>
        
        void copyData(const char *from_data, char *to_data, size_t len);
        void nullData(char *data, size_t len);
        
#endif //_UTILS_H
utils.c:
--------

Code:
#include "utils.h"

void copyData(const char *from_data, char *to_data, size_t len)
{
        ...
}

void nullData(char *data, size_t len)
{
        ...
}

I hope anyone can help me with this!
Thanks

Last edited by Last Attacker; 05-04-2006 at 06:22 PM.
 
Old 05-04-2006, 06:44 PM   #2
madluther
Member
 
Registered: Aug 2004
Distribution: LFS
Posts: 350

Rep: Reputation: 31
Looks like the problem is in your Makefile
change this
Code:
obj-m += compr_dev.o
compr_dev-objs := dyn_buffer.o utils.o compr.o
to

Code:
obj-m := compr_dev.o
compr_dev-objs := dyn_buffer.o utils.o compr.o
and hopefully it should build

HTH

Mad.
 
Old 05-05-2006, 12:58 AM   #3
Last Attacker
Member
 
Registered: Jun 2004
Location: South Africa
Distribution: Ubuntu
Posts: 120

Original Poster
Rep: Reputation: 15
Tried that about a couple of times.
Sorry doesn't work.
 
Old 05-05-2006, 04:30 AM   #4
Last Attacker
Member
 
Registered: Jun 2004
Location: South Africa
Distribution: Ubuntu
Posts: 120

Original Poster
Rep: Reputation: 15
I thoaght it might be a good idea to submit a more detailed report on what the compiler gave me:

- non-verbosed -

Code:
make -C /tmp/linux-2.6.10 M=`pwd` modules ARCH=um
make[1]: Entering directory `/tmp/linux-2.6.10'
  CC [M]  /home/la/compr/compr.o
In file included from /home/la/compr/compr.h:16,
                 from /home/la/compr/compr.c:9:
include/linux/cdev.h:24: warning: ‘struct inode’ declared inside parameter list
include/linux/cdev.h:24: warning: its scope is only this definition or declaration, which is probably not what you want
  CC [M]  /home/la/compr/dyn_buffer.o
  CC [M]  /home/la/compr/utils.o
  LD [M]  /home/la/compr/compr_dev.o
  Building modules, stage 2.
  MODPOST
*** Warning: "copyData" [/home/la/compr/dyn_buffer.ko] undefined!
*** Warning: "nullData" [/home/la/compr/dyn_buffer.ko] undefined!
*** Warning: "dynCleanBuffer" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynInitBuffer" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynAddChunk" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynMakeBigBuffer" [/home/la/compr/compr.ko] undefined!
  CC      /home/la/compr/compr.mod.o
  LD [M]  /home/la/compr/compr.ko
  CC      /home/la/compr/compr_dev.mod.o
  LD [M]  /home/la/compr/compr_dev.ko
  CC      /home/la/compr/dyn_buffer.mod.o
  LD [M]  /home/la/compr/dyn_buffer.ko
make[1]: Leaving directory `/tmp/linux-2.6.10'
- verbosed -

Code:
make -C /tmp/linux-2.6.10 M=`pwd` modules ARCH=um
make[1]: Entering directory `/tmp/linux-2.6.10'
mkdir -p /home/la/compr/.tmp_versions
make -f scripts/Makefile.build obj=/home/la/compr
  gcc -Wp,-MD,/home/la/compr/.compr.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2     -fomit-frame-pointer -U__i386__ -Ui386  -D__arch_um__ -DSUBARCH=\"i386\" -D_LARGEFILE64_SOURCE -Iarch/um/include -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask -I/tmp/linux-2.6.10/arch/um/kernel/skas/include -fno-unit-at-a-time -Wdeclaration-after-statement   -DMODULE -DKBUILD_BASENAME=compr -DKBUILD_MODNAME=compr_dev -c -o /home/la/compr/.tmp_compr.o /home/la/compr/compr.c
In file included from /home/la/compr/compr.h:16,
                 from /home/la/compr/compr.c:9:
include/linux/cdev.h:24: warning: ‘struct inode’ declared inside parameter list
include/linux/cdev.h:24: warning: its scope is only this definition or declaration, which is probably not what you want
  gcc -Wp,-MD,/home/la/compr/.dyn_buffer.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2     -fomit-frame-pointer -U__i386__ -Ui386  -D__arch_um__ -DSUBARCH=\"i386\" -D_LARGEFILE64_SOURCE -Iarch/um/include -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask -I/tmp/linux-2.6.10/arch/um/kernel/skas/include -fno-unit-at-a-time -Wdeclaration-after-statement   -DMODULE -DKBUILD_BASENAME=dyn_buffer -DKBUILD_MODNAME=compr_dev -c -o /home/la/compr/.tmp_dyn_buffer.o /home/la/compr/dyn_buffer.c
  gcc -Wp,-MD,/home/la/compr/.utils.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2     -fomit-frame-pointer -U__i386__ -Ui386  -D__arch_um__ -DSUBARCH=\"i386\" -D_LARGEFILE64_SOURCE -Iarch/um/include -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask -I/tmp/linux-2.6.10/arch/um/kernel/skas/include -fno-unit-at-a-time -Wdeclaration-after-statement   -DMODULE -DKBUILD_BASENAME=utils -DKBUILD_MODNAME=compr_dev -c -o /home/la/compr/.tmp_utils.o /home/la/compr/utils.c
  ld   -r -o /home/la/compr/compr_dev.o /home/la/compr/compr.o /home/la/compr/dyn_buffer.o /home/la/compr/utils.o
  Building modules, stage 2.
make -rR -f /tmp/linux-2.6.10/scripts/Makefile.modpost
  scripts/mod/modpost -m -a -i /tmp/linux-2.6.10/Module.symvers vmlinux /home/la/compr/compr.o /home/la/compr/compr_dev.o /home/la/compr/dyn_buffer.o
*** Warning: "copyData" [/home/la/compr/dyn_buffer.ko] undefined!
*** Warning: "nullData" [/home/la/compr/dyn_buffer.ko] undefined!
*** Warning: "dynCleanBuffer" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynInitBuffer" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynAddChunk" [/home/la/compr/compr.ko] undefined!
*** Warning: "dynMakeBigBuffer" [/home/la/compr/compr.ko] undefined!
  gcc -Wp,-MD,/home/la/compr/.compr.mod.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2     -fomit-frame-pointer -U__i386__ -Ui386  -D__arch_um__ -DSUBARCH=\"i386\" -D_LARGEFILE64_SOURCE -Iarch/um/include -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask -I/tmp/linux-2.6.10/arch/um/kernel/skas/include -fno-unit-at-a-time -Wdeclaration-after-statement    -DKBUILD_BASENAME=compr -DKBUILD_MODNAME=compr -DMODULE -c -o /home/la/compr/compr.mod.o /home/la/compr/compr.mod.c
  ld  -r -o /home/la/compr/compr.ko /home/la/compr/compr.o /home/la/compr/compr.mod.o
  gcc -Wp,-MD,/home/la/compr/.compr_dev.mod.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2     -fomit-frame-pointer -U__i386__ -Ui386  -D__arch_um__ -DSUBARCH=\"i386\" -D_LARGEFILE64_SOURCE -Iarch/um/include -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask -I/tmp/linux-2.6.10/arch/um/kernel/skas/include -fno-unit-at-a-time -Wdeclaration-after-statement    -DKBUILD_BASENAME=compr_dev -DKBUILD_MODNAME=compr_dev -DMODULE -c -o /home/la/compr/compr_dev.mod.o /home/la/compr/compr_dev.mod.c
  ld  -r -o /home/la/compr/compr_dev.ko /home/la/compr/compr_dev.o /home/la/compr/compr_dev.mod.o
  gcc -Wp,-MD,/home/la/compr/.dyn_buffer.mod.o.d -nostdinc -iwithprefix include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2     -fomit-frame-pointer -U__i386__ -Ui386  -D__arch_um__ -DSUBARCH=\"i386\" -D_LARGEFILE64_SOURCE -Iarch/um/include -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask -I/tmp/linux-2.6.10/arch/um/kernel/skas/include -fno-unit-at-a-time -Wdeclaration-after-statement    -DKBUILD_BASENAME=dyn_buffer -DKBUILD_MODNAME=dyn_buffer -DMODULE -c -o /home/la/compr/dyn_buffer.mod.o /home/la/compr/dyn_buffer.mod.c
  ld  -r -o /home/la/compr/dyn_buffer.ko /home/la/compr/dyn_buffer.o /home/la/compr/dyn_buffer.mod.o
make[1]: Leaving directory `/tmp/linux-2.6.10'
See how it created multiple .ko files, where it is supposed to only make 1?

Last edited by Last Attacker; 05-05-2006 at 04:32 AM.
 
Old 05-05-2006, 07:59 AM   #5
madluther
Member
 
Registered: Aug 2004
Distribution: LFS
Posts: 350

Rep: Reputation: 31
Strange, I have cut 'n' pasted all your sources into files on my pc, added some dummy return statements in the obvious places and it builds just fine. I suspect the problem is elsewhere.

This is what I get when building.


Code:
madluther@pc2:~/lkp/lq$ make V=1
make -C /lib/modules/2.6.13.2/build M=`pwd` modules ARCH=i386
make[1]: Entering directory `/usr/src/linux-2.6.13'
mkdir -p /home/madluther/lkp/lq/.tmp_versions
make -f scripts/Makefile.build obj=/home/madluther/lkp/lq
  gcc -m32 -Wp,-MD,/home/madluther/lkp/lq/.dyn_buffer.o.d  -nostdinc -isystem /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2     -fomit-frame-pointer -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mtune=pentium4 -Iinclude/asm-i386/mach-default -Wdeclaration-after-statement    -DMODULE -DKBUILD_BASENAME=dyn_buffer -DKBUILD_MODNAME=compr_dev -c -o /home/madluther/lkp/lq/dyn_buffer.o /home/madluther/lkp/lq/dyn_buffer.c
/home/madluther/lkp/lq/dyn_buffer.c: In function `dynMakeBigBuffer':
/home/madluther/lkp/lq/dyn_buffer.c:28: warning: control reaches end of non-void function
/home/madluther/lkp/lq/dyn_buffer.c: At top level:
/home/madluther/lkp/lq/dyn_buffer.c:18: warning: 'dynAddNumChunks' defined but not used
  gcc -m32 -Wp,-MD,/home/madluther/lkp/lq/.utils.o.d  -nostdinc -isystem /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2     -fomit-frame-pointer -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mtune=pentium4 -Iinclude/asm-i386/mach-default -Wdeclaration-after-statement    -DMODULE -DKBUILD_BASENAME=utils -DKBUILD_MODNAME=compr_dev -c -o /home/madluther/lkp/lq/utils.o /home/madluther/lkp/lq/utils.c
  gcc -m32 -Wp,-MD,/home/madluther/lkp/lq/.compr.o.d  -nostdinc -isystem /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2     -fomit-frame-pointer -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mtune=pentium4 -Iinclude/asm-i386/mach-default -Wdeclaration-after-statement    -DMODULE -DKBUILD_BASENAME=compr -DKBUILD_MODNAME=compr_dev -c -o /home/madluther/lkp/lq/compr.o /home/madluther/lkp/lq/compr.c
In file included from /home/madluther/lkp/lq/compr.h:7,
                 from /home/madluther/lkp/lq/compr.c:1:
include/linux/cdev.h:24: warning: "struct inode" declared inside parameter list
include/linux/cdev.h:24: warning: its scope is only this definition or declaration, which is probably not what you want
/home/madluther/lkp/lq/compr.c: In function `init_module':
/home/madluther/lkp/lq/compr.c:93: warning: control reaches end of non-void function
/home/madluther/lkp/lq/compr.c: At top level:
/home/madluther/lkp/lq/compr.c:21: warning: 'compr_buffer' defined but not used
/home/madluther/lkp/lq/compr.c:23: warning: 'compr_cdev' defined but not used
  ld -m elf_i386 -m elf_i386  -r -o /home/madluther/lkp/lq/compr_dev.o /home/madluther/lkp/lq/dyn_buffer.o /home/madluther/lkp/lq/utils.o /home/madluther/lkp/lq/compr.o
  Building modules, stage 2.
make -rR -f /usr/src/linux-2.6.13/scripts/Makefile.modpost
  scripts/mod/modpost   -i /usr/src/linux-2.6.13/Module.symvers vmlinux /home/madluther/lkp/lq/compr_dev.o
  gcc -m32 -Wp,-MD,/home/madluther/lkp/lq/.compr_dev.mod.o.d  -nostdinc -isystem /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include -D__KERNEL__ -Iinclude  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2     -fomit-frame-pointer -pipe -msoft-float -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mtune=pentium4 -Iinclude/asm-i386/mach-default -Wdeclaration-after-statement     -DKBUILD_BASENAME=compr_dev -DKBUILD_MODNAME=compr_dev -DMODULE -c -o /home/madluther/lkp/lq/compr_dev.mod.o /home/madluther/lkp/lq/compr_dev.mod.c
  ld -m elf_i386 -m elf_i386 -r -o /home/madluther/lkp/lq/compr_dev.ko /home/madluther/lkp/lq/compr_dev.o /home/madluther/lkp/lq/compr_dev.mod.o
make[1]: Leaving directory `/usr/src/linux-2.6.13'
I changed ARCH to i386, but everything else is the same.

HTH

Mad.
 
Old 05-05-2006, 08:33 AM   #6
Last Attacker
Member
 
Registered: Jun 2004
Location: South Africa
Distribution: Ubuntu
Posts: 120

Original Poster
Rep: Reputation: 15
Could it be a bad linux kernel or did I do something wrong in one of the implementation phases?
Maybe I'll try to put on the 2.6.16 kernel since that has worked before with UML but I removed it for some reason I couldn't remember.
Like I said, I have the 2.6.10 kernel for UML and 2.6.13-15 for my default SuSE.
Strange thing is that SuSE 10's release kernel doesn't want to compile into UML.
 
Old 05-06-2006, 08:16 AM   #7
Last Attacker
Member
 
Registered: Jun 2004
Location: South Africa
Distribution: Ubuntu
Posts: 120

Original Poster
Rep: Reputation: 15
I have compiled it with my ordinary 2.6.13-15 kernel that comes with SuSE 10 but still gives me the *** warning messages.
Atleast I didn't have to add the ARCH=um in my makefile.
 
Old 05-06-2006, 09:10 AM   #8
Last Attacker
Member
 
Registered: Jun 2004
Location: South Africa
Distribution: Ubuntu
Posts: 120

Original Poster
Rep: Reputation: 15
I finally got it with the help of Maxim at the #kernelnewbies IRC channel.
All I had to do was issue a "make -C <path to linux src> M=`pwd` clean" first

Man, another small stone that made it look like a mountain to cross!
Trust me, when you get to a problem that looks bad ... step back and check all the small stuff because the chances are good that it is just 1 thing you've missed.

Thanks to all who've helped me with this!

Last edited by Last Attacker; 05-06-2006 at 09:16 AM.
 
  


Reply

Tags
kernel, makefile, module, programming



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
which source tree to choose for module compilation ? roemisch Linux - Hardware 4 03-31-2005 04:03 PM
creating Makefile with multiple kernel module files b123coder Programming 0 12-26-2004 08:41 AM
Building kernel module from multiple source file in 2.6 kernel yogeshwar_s Programming 1 12-20-2004 09:31 AM
Installing irda module - problem during kernel compilation hobz Linux - General 3 07-08-2004 01:34 PM
kernel module compilation zbrox Linux - Software 1 01-28-2004 03:31 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 09:09 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration