当前位置: 技术问答>linux和unix
在LINUX下编写模块???
来源: 互联网 发布时间:2014-12-15
本文导语: 我尝试在LINXU下调用自己写的所谓模块,但是没有成功,水平有限,请大家指教。具体如下: // testmodule.h #ifndef TESTMODULE_H #define TESTMODULE_H extern int testprintf(void); #endif //testmodule.c #define MODULE #include #include #...
我尝试在LINXU下调用自己写的所谓模块,但是没有成功,水平有限,请大家指教。具体如下:
// testmodule.h
#ifndef TESTMODULE_H
#define TESTMODULE_H
extern int testprintf(void);
#endif
//testmodule.c
#define MODULE
#include
#include
#include "/work/testmodule.h"
int testprintf(void)
{
printk("rn this is my testn");
return 1;
}
接下来用 gcc -Wall -c -o testmodule.o testmodule.c
编译
再用insmod加载模块,通过lsmod也能看到加载成功。
//callmodule.c
#include "/work/testmodule.h"
int main(void)
{
testprintf();
return 3;
}
后来想直接调用testmodule.o中的函数 testprintf()就不行了
gcc -Wall -o callmodule.o callmodule.c
时出现错误提示如下:
in function 'main'
/tmp/cczfuvwh.o: infunction
/tmp/cczfuvwh.o: undefined reference to 'testprintf'
collect2: ld returned 1 exit status
请帮帮我吧?谢谢大家
// testmodule.h
#ifndef TESTMODULE_H
#define TESTMODULE_H
extern int testprintf(void);
#endif
//testmodule.c
#define MODULE
#include
#include
#include "/work/testmodule.h"
int testprintf(void)
{
printk("rn this is my testn");
return 1;
}
接下来用 gcc -Wall -c -o testmodule.o testmodule.c
编译
再用insmod加载模块,通过lsmod也能看到加载成功。
//callmodule.c
#include "/work/testmodule.h"
int main(void)
{
testprintf();
return 3;
}
后来想直接调用testmodule.o中的函数 testprintf()就不行了
gcc -Wall -o callmodule.o callmodule.c
时出现错误提示如下:
in function 'main'
/tmp/cczfuvwh.o: infunction
/tmp/cczfuvwh.o: undefined reference to 'testprintf'
collect2: ld returned 1 exit status
请帮帮我吧?谢谢大家
|
#include "/work/testmodule.h"
??????????????????
为什么用这么奇怪的包含方法?
??????????????????
为什么用这么奇怪的包含方法?
|
是不是少了
gcc -L/work/
gcc -L/work/
|
gcc -Wall -o callmodule.o callmodule.c 错误!!!
在callmodule.c没有定义testprintf(),同时#include "/work/testmodule.h"也没有,里面只是申明了testprintf()的一个外部申明
在callmodule.c没有定义testprintf(),同时#include "/work/testmodule.h"也没有,里面只是申明了testprintf()的一个外部申明
|
http://www.minigui.org/cgi-bin/lb5000/forums.cgi?forum=23