Re: hello.c,error
- From: Doug Mitton <doug_mitton@xxxxxxxxxxxxx>
- Date: Wed, 25 Apr 2007 11:15:50 -0400
anganthia <angantia@xxxxxxxxx> wrote:
hey guys i am newbie and am trying to compile the famous helloworld
program and i am using the following hello.c file and the make file
also i have given and i am getting the following errors i am trying
from one week pls help
hello.c
**************************************
#include <linux/init.h>
#include <linux/module.h>
static int hello_init(void) /* Loads a module in the kernel */
{
printk(KERN_ALERT"Hello kernel\n");
return 0;
}
static void hello_exit(void) /* Removes module from kernel */
{
printk(KERN_ALERT"GoodBye Kernel\n");
}
module_init(hello_init);
module_exit(hello_exit);
makefile
****************************
ifneq ($KERNELRELEASE),)
obj-m :=hello.o
else
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
%make hello
********************************
cc -c -o hello.o hello.c
hello.c:2:24: error: linux/init.h: No such file or directory
hello.c:3:26: error: linux/module.h: No such file or directory
hello.c: In function 'hello_init':
hello.c:7: error: 'KERN_ALERT' undeclared (first use in this function)
hello.c:7: error: (Each undeclared identifier is reported only once
hello.c:7: error: for each function it appears in.)
hello.c:7: error: expected ')' before string constant
hello.c: In function 'hello_exit':
hello.c:13: error: 'KERN_ALERT' undeclared (first use in this
function)
hello.c:13: error: expected ')' before string constant
hello.c: At top level:
hello.c:16: warning: data definition has no type or storage class
hello.c:16: warning: parameter names (without types) in function
declaration
hello.c:17: warning: data definition has no type or storage class
hello.c:17: warning: parameter names (without types) in function
declaration
make: *** [hello.o] Error 1
I don't want to confuse the issue but here is one I've been tinkering
with with some reference URL's. Don't let the "main" function confuse
you. Its not what you think.
This one (only) works with a 2.6.x kernel.
hello.c
****************************************************************************
/* 010831 - Linux Journal Sept 2001 Pg 24 - Loadable Module Hello.c
- compile with
gcc -c -DMODULE -D__KERNEL__ hello.c
- Use with
insmod ./hello.o
lsmod
rmmod hello.o
050417 - http://tldp.org/LDP/lkmpg/2.6/html/index.html
- make -C /usr/src/linux-`uname -r` SUBDIRS=$PWD modules
- Makefile: obj-m += src_file.o
050922 - Repaired and made modern from Linux Journal Oct 2005 Pg
22.
http://www.linuxjournal.com/article/8453
060406 - Tried adding a main function ... it doesn't work exactly
as you'd think.
- Follow the ftp kernel module example to add a sys_call.
*/
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#define MYKERN "<4> " /* 1=minimum, console only; 4=kernel warning,
/var/log/messages */
int main(void) {
printk(MYKERN "I'm in the main loop now!\n");
return 0;
}
int init_module() {
int x;
printk(MYKERN "Hello, kernel!\n");
x=main();
return 0;
}
void cleanup_module() {
printk(MYKERN "I'm not offended that you "
"unloaded me. Have a pleasant day!\n");
}
MODULE_AUTHOR("Linux Journal Sept 2001 & Oct 2005.");
MODULE_LICENSE("GPL");
Makefile
****************************************************************************
# 050922 - Very basic kernel module make file.
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -f *.o *.ko *.mod.c
Output
****************************************************************************
make -C /lib/modules/2.6.20/build
SUBDIRS=/usr/src/MySource/modules/26/hello modules
make[1]: Entering directory `/usr/src/linux-2.6.20'
CC [M] /usr/src/MySource/modules/26/hello/hello.o
Building modules, stage 2.
MODPOST 1 modules
CC /usr/src/MySource/modules/26/hello/hello.mod.o
LD [M] /usr/src/MySource/modules/26/hello/hello.ko
make[1]: Leaving directory `/usr/src/linux-2.6.20'
Good luck!
--
------------------------------------------------
http://www3.sympatico.ca/dmitton
SPAM Reduction: Remove "x." from my domain.
------------------------------------------------
--
Posted via a free Usenet account from http://www.teranews.com
.
- Prev by Date: Re: Linux questions
- Next by Date: Re: hello.c error
- Previous by thread: Linux questions
- Next by thread: Re: hello.c error
- Index(es):
Relevant Pages
|