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

Re: Missing Makefile

On Thu, 01 Aug 2013 09:30:31 -0400, Jerry Stuckle wrote
> On 7/31/2013 11:12 PM, Tom H wrote:
>> On Tue, 30 Jul 2013 23:05:01 -0400, Jerry Stuckle wrote:
>>> I'm trying to compile my first module for Debian.
>>> My makefile is:
>>> obj-m = mymodule.o
>>> KVERSION = $(shell uname -r)
>>> all:
>>>     make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
>>> clean:
>>>     make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
>>> When I try to run make, I get the following:
>>> make -C /lib/modules/3.2.0-4-amd64/build M-/home/jerry modules
>>> make[1]: Entering directory `/usr/src/linux-headers-3.2.0-4-amd64'
>>> /usr/src/linux-headers-3.2.0-4-common/scripts/Makefile.build:44:
>>> /usr/src/linux-headers-3.2.0-4-common/scripts/basic/Makefile: No such
>>> file or directory make[5]: *** No rule to make target
>>> `/usr/src/linux-headers-3.2.0-4-common/scripts/basic/Makefile'. Stop.
>> That is true -
>> /usr/src/linux-headers-3.2.0-4-common/scripts/basic/Makefile does not
>> exist.
>> Is linux-kbuild-3.2 installed?
>> "/usr/src/linux-headers-3.2.0-4-common/scripts" is a link to
>> "/lib/modules/linux-kbuild-3.2/scripts".
> Thanks for the response. Yes, linux-kbuild-3.2 is installed (and the
> symlink is correct).

This is on sid, not wheezy (I don't have a wheezy box with compilation tools installed).

[root@localhost:/usr/src/jstuckle]# aptitude search -F '%c %p %v %V' linux-image-3
i linux-image-3.10-1-amd64 3.10.3-1       3.10.3-1
p linux-image-3.10-1-amd64-dbg <none>         3.10.3-1

[root@localhost:/usr/src/jstuckle]# aptitude search -F '%c %p %v %V' linux-headers-3
p linux-headers-3.10-1-all <none>         3.10.3-1
p linux-headers-3.10-1-all-amd64 <none>         3.10.3-1
i linux-headers-3.10-1-amd64 3.10.3-1       3.10.3-1
i linux-headers-3.10-1-common 3.10.3-1       3.10.3-1

[root@localhost:/usr/src/jstuckle]# aptitude search -F '%c %p %v %V' linux-kbuild-3
i linux-kbuild-3.10 3.10-2         3.10-2

[root@localhost:/usr/src/jstuckle]# ls /usr/src/linux-headers-3.10-1-common/scripts basic depmod.sh genksyms Makefile.build makelst namespace.pl bin2c gcc-goto.sh kallsyms Makefile.clean mksysmap patch-kernel checkincludes.pl gcc-version.sh Kbuild.include Makefile.host mkuboot.sh pnmtologo checkstack.pl gcc-x86_32-has-stack-protector.sh kconfig Makefile.lib mkversion setlocalversion checkversion.pl gcc-x86_64-has-stack-protector.sh kernel-doc Makefile.modinst mod ver_linux conmakehash gen_initramfs_list.sh Lindent Makefile.modpost module-common.lds

[root@localhost:/usr/src/jstuckle]# stat /usr/src/linux-headers-3.10-1-common/scripts File: ‘/usr/src/linux-headers-3.10-1-common/scripts’ -> ‘../../lib/linux-kbuild-3.10/scripts’

I can compile a basic module using your Makefile. Can you?

[root@localhost:/usr/src/jstuckle]# ls
Makefile  mymodule.c

[root@localhost:/usr/src/jstuckle]# cat Makefile
obj-m = mymodule.o
KVERSION = $(shell uname -r)
    make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
    make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

[root@localhost:/usr/src/jstuckle]# cat mymodule.c
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
    printk(KERN_ALERT "Hello world\n");
    return 0;
void cleanup_module(void)
    printk(KERN_ALERT "Goodbye world\n");

[root@localhost:/usr/src/jstuckle]# make
make -C /lib/modules/3.10-1-amd64/build M=/usr/src/jstuckle modules
make[1]: Entering directory `/usr/src/linux-headers-3.10-1-amd64'
CC [M]  /usr/src/jstuckle/mymodule.o
Building modules, stage 2.
MODPOST 1 modules
CC      /usr/src/jstuckle/mymodule.mod.o
LD [M]  /usr/src/jstuckle/mymodule.ko
make[1]: Leaving directory `/usr/src/linux-headers-3.10-1-amd64'

[root@localhost:/usr/src/jstuckle]# ls
Makefile modules.order Module.symvers mymodule.c mymodule.ko mymodule.mod.c mymodule.mod.o mymodule.o

[root@localhost:/usr/src/jstuckle]# insmod mymodule.ko

[root@localhost:/usr/src/jstuckle]# grep mymodule /proc/modules
mymodule 12388 0 - Live 0xffffffffa02e5000 (PO)

Reply to: