当前位置: 技术问答>linux和unix
大家好,我是新手。我正在看《linux驱动程序程序》问大家一个简单问题。
来源: 互联网 发布时间:2015-08-15
本文导语: 《linux驱动程序程序》(第二版)中第二章(25页)有如下程序: /* * $Id: hello.c,v 1.10 2001/07/17 10:30:02 rubini Exp $ */ ...
《linux驱动程序程序》(第二版)中第二章(25页)有如下程序:
/*
* $Id: hello.c,v 1.10 2001/07/17 10:30:02 rubini Exp $
*/
#define MODULE
#include
/*
* These lines, although not shown in the book,
* are needed to make hello.c run properly even when
* your kernel has version support enabled
*/
int init_module(void) { printk("Hello, worldn"); return 0; }
void cleanup_module(void) { printk("Goodbye cruel worldn"); }
可我用
gcc -c hello.c
isnmod ./hello.o
时总报错。今天上网看大家发的贴子,才发现需要这样:
#define MODULE
#include
#include
MODULE_LICENSE("GPL");
int int_module(void) {printk("Hello,worldn";return 0;}
void cleanup_module(void) {printk("Goodbye cruel worldn");}
多了这么几句:
#include
MODULE_LICENSE("GPL");
并且要这样编译:
gcc -I /usr/src/linux-2.4.20-8/include -c hello.o.
我想问问大伙,为什么要上面这样呢?《linux驱动程序程序》(第二版)中有说明吗?
谢谢了
/*
* $Id: hello.c,v 1.10 2001/07/17 10:30:02 rubini Exp $
*/
#define MODULE
#include
/*
* These lines, although not shown in the book,
* are needed to make hello.c run properly even when
* your kernel has version support enabled
*/
int init_module(void) { printk("Hello, worldn"); return 0; }
void cleanup_module(void) { printk("Goodbye cruel worldn"); }
可我用
gcc -c hello.c
isnmod ./hello.o
时总报错。今天上网看大家发的贴子,才发现需要这样:
#define MODULE
#include
#include
MODULE_LICENSE("GPL");
int int_module(void) {printk("Hello,worldn";return 0;}
void cleanup_module(void) {printk("Goodbye cruel worldn");}
多了这么几句:
#include
MODULE_LICENSE("GPL");
并且要这样编译:
gcc -I /usr/src/linux-2.4.20-8/include -c hello.o.
我想问问大伙,为什么要上面这样呢?《linux驱动程序程序》(第二版)中有说明吗?
谢谢了
|
#include //这个不一定要
MODULE_LICENSE("GPL"); //这个要,一定需要一个LICENSE
gcc -I /usr/src/linux-2.4.20-8/include -c hello.o. //编译的时候加上个include目录很正常吧
MODULE_LICENSE("GPL"); //这个要,一定需要一个LICENSE
gcc -I /usr/src/linux-2.4.20-8/include -c hello.o. //编译的时候加上个include目录很正常吧
|
MODULE_LICENSE("GPL"); 可以加也可以不加,如果不加插入内核的时候会有污染内核的警告,不过不影响运行,这个不需要增加勘误的,这个不是错误。你有问题主要是编译时候的问题。
编译的时候当然要把内核源代码的路径指明了,不让就会包含错误的头文件。
gcc -I /usr/src/linux-2.4.20-8/include -c hello.o 这个也有点问题吧-0-
是不是应该是gcc -I /usr/src/linux-2.4.20-8/include -c -o hello.o hello.c
编译的时候当然要把内核源代码的路径指明了,不让就会包含错误的头文件。
gcc -I /usr/src/linux-2.4.20-8/include -c hello.o 这个也有点问题吧-0-
是不是应该是gcc -I /usr/src/linux-2.4.20-8/include -c -o hello.o hello.c
|
用 insmod -f 强行插入就可以了.你只是学习用,不必理会版本问题.