Kernel module compilation errors
I am just getting started with kernel module development, and I can't get anything to compile. I get the following errors: In file included from main.c:1:0: /usr/src/linux/include/linux/init.h:142:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘load_default_modules’ void __init load_default_modules(void); ^~~~~~~~~~~~~~~~~~~~ /usr/src/linux/include/linux/init.h:143:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘init_rootfs’ int __init init_rootfs(void); ^~~~~~~~~~~ /usr/src/linux/include/linux/init.h:285:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘parse_early_param’ void __init parse_early_param(void); ^~~~~~~~~~~~~~~~~ /usr/src/linux/include/linux/init.h:286:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘parse_early_options’ void __init parse_early_options(char *cmdline); The errors go on and on, but the majority look like that. My code: #include <linux/init.h> #include <linux/module.h> int main() { return 0; } The compile command: gcc -I /usr/src/linux/include/ main.c Thanks in advance for any help
On Thu, Aug 11, 2016 at 07:25:45PM +0000, Matt M wrote:
I am just getting started with kernel module development, and I can't get anything to compile.
I get the following errors:
In file included from main.c:1:0: /usr/src/linux/include/linux/init.h:142:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘load_default_modules’ void __init load_default_modules(void); ^~~~~~~~~~~~~~~~~~~~ /usr/src/linux/include/linux/init.h:143:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘init_rootfs’ int __init init_rootfs(void); ^~~~~~~~~~~ /usr/src/linux/include/linux/init.h:285:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘parse_early_param’ void __init parse_early_param(void); ^~~~~~~~~~~~~~~~~ /usr/src/linux/include/linux/init.h:286:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘parse_early_options’ void __init parse_early_options(char *cmdline);
The errors go on and on, but the majority look like that.
My code:
#include <linux/init.h> #include <linux/module.h>
int main() { return 0; }
The compile command: gcc -I /usr/src/linux/include/ main.c
That's not how you compile a Linux kernel module, sorry. Please read the very good documentation for how to set up a Makefile for building a kernel module. It's in the kernel's Documentation/ directory. best of luck, greg k-h
Thank you On Thu, Aug 11, 2016 at 7:40 PM Greg KH <greg@kroah.com> wrote:
On Thu, Aug 11, 2016 at 07:25:45PM +0000, Matt M wrote:
I am just getting started with kernel module development, and I can't get anything to compile.
I get the following errors:
In file included from main.c:1:0: /usr/src/linux/include/linux/init.h:142:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘load_default_modules’ void __init load_default_modules(void); ^~~~~~~~~~~~~~~~~~~~ /usr/src/linux/include/linux/init.h:143:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘init_rootfs’ int __init init_rootfs(void); ^~~~~~~~~~~ /usr/src/linux/include/linux/init.h:285:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘parse_early_param’ void __init parse_early_param(void); ^~~~~~~~~~~~~~~~~ /usr/src/linux/include/linux/init.h:286:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘parse_early_options’ void __init parse_early_options(char *cmdline);
The errors go on and on, but the majority look like that.
My code:
#include <linux/init.h> #include <linux/module.h>
int main() { return 0; }
The compile command: gcc -I /usr/src/linux/include/ main.c
That's not how you compile a Linux kernel module, sorry.
Please read the very good documentation for how to set up a Makefile for building a kernel module. It's in the kernel's Documentation/ directory.
best of luck,
greg k-h
I actually found this, which was exactly what I needed. On Thu, Aug 11, 2016 at 4:50 PM Matt M <cmorrow132@gmail.com> wrote:
Thank you
On Thu, Aug 11, 2016 at 7:40 PM Greg KH <greg@kroah.com> wrote:
On Thu, Aug 11, 2016 at 07:25:45PM +0000, Matt M wrote:
I am just getting started with kernel module development, and I can't get anything to compile.
I get the following errors:
In file included from main.c:1:0: /usr/src/linux/include/linux/init.h:142:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘load_default_modules’ void __init load_default_modules(void); ^~~~~~~~~~~~~~~~~~~~ /usr/src/linux/include/linux/init.h:143:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘init_rootfs’ int __init init_rootfs(void); ^~~~~~~~~~~ /usr/src/linux/include/linux/init.h:285:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘parse_early_param’ void __init parse_early_param(void); ^~~~~~~~~~~~~~~~~ /usr/src/linux/include/linux/init.h:286:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘parse_early_options’ void __init parse_early_options(char *cmdline);
The errors go on and on, but the majority look like that.
My code:
#include <linux/init.h> #include <linux/module.h>
int main() { return 0; }
The compile command: gcc -I /usr/src/linux/include/ main.c
That's not how you compile a Linux kernel module, sorry.
Please read the very good documentation for how to set up a Makefile for building a kernel module. It's in the kernel's Documentation/ directory.
best of luck,
greg k-h
participants (2)
-
Greg KH -
Matt M