My simple kernel module wont compile
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?
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 <testlaster@gmail.com> 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
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?
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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
On Thu, Sep 11, 2014 at 8:12 AM, testlaster <testlaster@gmail.com <mailto:testlaster@gmail.com>> 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@kernelnewbies.org <mailto:Kernelnewbies@kernelnewbies.org> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Did you install the kernel source or at least the kernel headers? ---------- Forwarded message ---------- From: testlaster <testlaster@gmail.com> Date: Thu, Sep 11, 2014 at 11:13 AM Subject: Re: My simple kernel module wont compile To: kernelnewbies@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 On Thu, Sep 11, 2014 at 8:12 AM, testlaster <testlaster@gmail.com> 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
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?
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing listKernelnewbies@kernelnewbies.orghttp://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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> On 9/11/2014 5:06 PM, Gustavo Bittencourt wrote:
Did you install the kernel source or at least the kernel headers?
---------- Forwarded message ---------- From: *testlaster* <testlaster@gmail.com <mailto:testlaster@gmail.com>> Date: Thu, Sep 11, 2014 at 11:13 AM Subject: Re: My simple kernel module wont compile To: kernelnewbies@kernelnewbies.org <mailto:kernelnewbies@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
On Thu, Sep 11, 2014 at 8:12 AM, testlaster <testlaster@gmail.com <mailto:testlaster@gmail.com>> 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@kernelnewbies.org <mailto:Kernelnewbies@kernelnewbies.org> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org <mailto:Kernelnewbies@kernelnewbies.org> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org <mailto:Kernelnewbies@kernelnewbies.org> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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.
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.
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
On Thu, 11 Sep 2014 16:13:58 +0200, testlaster said:
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....
participants (4)
-
Bruno Guedes Souto -
Gustavo Bittencourt -
testlaster -
Valdis.Kletnieks@vt.edu