Skip to contentSkip to conversation

My simple kernel module wont compile

DISCUSSION testlaster 4 participants 7 messages Sep 11, 2014 – Sep 12, 2014

lore
Share & tools
lore

testlaster

author
#0 lore raw

Hey Guys

All im trying to do here is learn about make files and how to link linux header files stored in /usr/src/linux-headers-3.13.0-35-generic to my program that im writing.
So far ive been getting the simplest of Kernel Modules to compile and load in Linux but nothing useful . The moment I delve deeper I seem to get missing header file errors when using "make".
All I want to do is write from Kernel space into user space and visa verse. I will be dumping allocated PCI memory blocks into files. I will also have to edit registers of the PCI to be able to make triggers go off by setting bits high etc.
But this is just an introduction to it all and im already having trouble compiling.

Now im not 100% sure if its missing header files but the errors is quite large.

This is my Pastebin of the C MODULE Code :

pastebin.com/lWPBR8DJ

And here it the PASTEBIN of my MAKEFILE and its errors:

pastebin.com/ffT1F26N

ALSO...Does anybody know of a good tutorial on how to write a PCI driver
in Kernel space using kernel modules...also how to send data from and to
the module from UserSpace?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140911/b9bfc4d9/attachment.html

#1 lore raw

Maybe you should replace the KERNEL_DIR definition in MAKEFILE. My suggestions:

KERNEL_DIR:=/usr/src/linux-headers-$(shell uname -r)/build or
KERNEL_DIR:=/lib/modules/$(shell uname -r)/build

Quoted 26 lines · testlaster

Hey Guys

All im trying to do here is learn about make files and how to link linux header files stored in /usr/src/linux-headers-3.13.0-35-generic to my program that im writing.
So far ive been getting the simplest of Kernel Modules to compile and load in Linux but nothing useful . The moment I delve deeper I seem to get missing header file errors when using "make".
All I want to do is write from Kernel space into user space and visa verse. I will be dumping allocated PCI memory blocks into files. I will also have to edit registers of the PCI to be able to make triggers go off by setting bits high etc.
But this is just an introduction to it all and im already having trouble compiling.

Now im not 100% sure if its missing header files but the errors is quite large.

This is my Pastebin of the C MODULE Code :

pastebin.com/lWPBR8DJ

And here it the PASTEBIN of my MAKEFILE and its errors:

pastebin.com/ffT1F26N

Quoted 10 lines

ALSO...Does anybody know of a good tutorial on how to write a PCI driver in Kernel space using kernel modules...also how to send data from and to the module from UserSpace?

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140911/85bd7e9e/attachment-0001.html

author
#2 lore raw

Hi Gustavo

I tried your suggestions.

The first line didn't work because I seem to not have a build directory there.
And the second one did exactly the same as mine did.

Quoted 50 lines · Gustavo Bittencourt

Maybe you should replace the KERNEL_DIR definition in MAKEFILE. My suggestions:

KERNEL_DIR:=/usr/src/linux-headers-$(shell uname -r)/build or
KERNEL_DIR:=/lib/modules/$(shell uname -r)/build

On Thu, Sep 11, 2014 at 8:12 AM, testlaster <[email protected] <mailto:[email protected]>> wrote:

Hey Guys

All im trying to do here is learn about make files and how to link linux header files stored in /usr/src/linux-headers-3.13.0-35-generic to my program that im writing.
So far ive been getting the simplest of Kernel Modules to compile and load in Linux but nothing useful . The moment I delve deeper I seem to get missing header file errors when using "make". All I want to do is write from Kernel space into user space and visa verse. I will be dumping allocated PCI memory blocks into files. I will also have to edit registers of the PCI to be able to make triggers go off by setting bits high etc.
But this is just an introduction to it all and im already having trouble compiling.

Now im not 100% sure if its missing header files but the errors is quite large.

This is my Pastebin of the C MODULE Code :

pastebin.com/lWPBR8DJ <http://pastebin.com/lWPBR8DJ>

And here it the PASTEBIN of my MAKEFILE and its errors:

pastebin.com/ffT1F26N <http://pastebin.com/ffT1F26N>

ALSO...Does anybody know of a good tutorial on how to write a PCI driver in Kernel space using kernel modules...also how to send data from and to the module from UserSpace?

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
<mailto:[email protected]>
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Quoted 4 lines

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140911/4364f8d6/attachment.html

#3 lore raw

Did you install the kernel source or at least the kernel headers?

---------- Forwarded message ----------
From: testlaster <[email protected]>
Date: Thu, Sep 11, 2014 at 11:13 AM
Subject: Re: My simple kernel module wont compile
To: kernelnewbies at kernelnewbies.org

Hi Gustavo

I tried your suggestions.

The first line didn't work because I seem to not have a build directory there.
And the second one did exactly the same as mine did.

On 9/11/2014 3:49 PM, Gustavo Bittencourt wrote:

Maybe you should replace the KERNEL_DIR definition in MAKEFILE. My
suggestions:

KERNEL_DIR:=/usr/src/linux-headers-$(shell uname -r)/build or
KERNEL_DIR:=/lib/modules/$(shell uname -r)/build

Quoted 26 lines · testlaster

Hey Guys

All im trying to do here is learn about make files and how to link linux header files stored in /usr/src/linux-headers-3.13.0-35-generic to my program that im writing.
So far ive been getting the simplest of Kernel Modules to compile and load in Linux but nothing useful . The moment I delve deeper I seem to get missing header file errors when using "make".
All I want to do is write from Kernel space into user space and visa verse. I will be dumping allocated PCI memory blocks into files. I will also have to edit registers of the PCI to be able to make triggers go off by setting bits high etc.
But this is just an introduction to it all and im already having trouble compiling.

Now im not 100% sure if its missing header files but the errors is quite large.

This is my Pastebin of the C MODULE Code :

pastebin.com/lWPBR8DJ

And here it the PASTEBIN of my MAKEFILE and its errors:

pastebin.com/ffT1F26N

Quoted 10 lines

ALSO...Does anybody know of a good tutorial on how to write a PCI driver in Kernel space using kernel modules...also how to send data from and to the module from UserSpace?

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

_______________________________________________
Kernelnewbies mailing
listKernelnewbies at kernelnewbies.orghttp://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140911/b9ba75a2/attachment-0001.html

#6 lore raw
In reply to testlaster
Quoted 2 lines · testlaster

The first line didn't work because I seem to not have a build directory there.

Hopefully, that /usr/src/linux-headers directory is an exact match for the kernel you're planning to use the module in.

make[2]: *** No rule to make target /usr/src/linux-headers-3.13.0-35-generic/arch/x86/syscalls/syscall_32.tbl', needed by arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h'. Stop.

That's sounding suspiciously like it's not a properly set up directory
tree suitable for building modules against....
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 848 bytes
Desc: not available
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140911/fa548238/attachment.bin

author
#4 lore raw
In reply to Gustavo Bittencourt

Yes I did run sudo apt-get install build-essential linux-headers-$(uname -r) to download the necessary headers. I also ran an apt-get for source files and it did install a whole bunch of them but Im not under the impression that you actually need the source files as well since they suppose to come with the OS?

The thing its complaining about... unistd_32.h appears to really be missing. Could this be because of a 64Bit version of the OS? Maybes just doesnt install it because its not necessary. But that wouldnt make sense because in unistd.h the only include there is will be the unistd_32.h and nowhere inside stands anything of #include<unistd_64.h>

Quoted 84 lines · Gustavo Bittencourt

Did you install the kernel source or at least the kernel headers?

---------- Forwarded message ----------
From: *testlaster* <testlaster at gmail.com <mailto:[email protected]>>
Date: Thu, Sep 11, 2014 at 11:13 AM
Subject: Re: My simple kernel module wont compile
To: kernelnewbies at kernelnewbies.org <mailto:[email protected]>

Hi Gustavo

I tried your suggestions.

The first line didn't work because I seem to not have a build directory there.
And the second one did exactly the same as mine did.

Quoted 50 lines · Gustavo Bittencourt

Maybe you should replace the KERNEL_DIR definition in MAKEFILE. My suggestions:

KERNEL_DIR:=/usr/src/linux-headers-$(shell uname -r)/build or
KERNEL_DIR:=/lib/modules/$(shell uname -r)/build

On Thu, Sep 11, 2014 at 8:12 AM, testlaster <[email protected] <mailto:[email protected]>> wrote:

Hey Guys

All im trying to do here is learn about make files and how to link linux header files stored in /usr/src/linux-headers-3.13.0-35-generic to my program that im writing.
So far ive been getting the simplest of Kernel Modules to compile and load in Linux but nothing useful . The moment I delve deeper I seem to get missing header file errors when using "make". All I want to do is write from Kernel space into user space and visa verse. I will be dumping allocated PCI memory blocks into files. I will also have to edit registers of the PCI to be able to make triggers go off by setting bits high etc.
But this is just an introduction to it all and im already having trouble compiling.

Now im not 100% sure if its missing header files but the errors is quite large.

This is my Pastebin of the C MODULE Code :

pastebin.com/lWPBR8DJ <http://pastebin.com/lWPBR8DJ>

And here it the PASTEBIN of my MAKEFILE and its errors:

pastebin.com/ffT1F26N <http://pastebin.com/ffT1F26N>

ALSO...Does anybody know of a good tutorial on how to write a PCI driver in Kernel space using kernel modules...also how to send data from and to the module from UserSpace?

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
<mailto:[email protected]>
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Quoted 4 lines

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org <mailto:[email protected]>
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org <mailto:[email protected]>
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Quoted 4 lines

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140912/8066f623/attachment.html

#5 lore raw
Quoted 7 lines · testlaster <testlaster <at> gmail.com> writes:

Yes I did run sudo apt-get install build-essential linux-headers-$(uname -r) to download the necessary headers. I also ran an apt-get for source files and it did install a whole bunch of them but Im not under the impression that you actually need the source files as well since they suppose to come with the OS?

No, many distributions don't come with the source files.

Quoted 2 lines

The thing its complaining about... unistd_32.h appears to really be missing. Could this be because of a 64Bit version of the OS?

No, I've ran your code last night on a 64bit machine of mine and beside some compiling errors due to wrong syntax and function declaration it was all fine.

Quoted 5 lines

Maybes
just doesnt install it because its not necessary. But that wouldnt make sense because in unistd.h the only include there is will be the unistd_32.h and nowhere inside stands anything of #include<unistd_64.h>

It seems to me, you are just missing the necessary tools from your distribution
to do the kind of work you want to do. Try a google search on your distro
+ kernel development and you probably will find what you need. Usually what you
must get are the linux-source, kernel-devel and kernel-tools packages.

Regards

Bruno Guedes Souto