阅读:1552回复:11
请帮我看看这个makefile 有何问题!
我编一个makefile,如下:
CC=gcc DFLAGS=-D__KERNEL__ -DMODULE -DLINUX INCLUDE=-I/usr/src/linux-2.4.18-3/include/linux CFLAGS=-ggdb3 -Wall -Wstrict-prototypes ***.o:***.c /usr/include/linux/version.h $(CC) $(DFLAGS) $(CFLAGS) $(INCLUDE) -c ***.c clean:rm -f *.o #make 成功的,但是加载模块时出现以下问题: #insmod ***.o ***.o unresolved symbol __netdev_watchdog_up(这些都是我程序中用到的函数!) ***.o unrevolved symbol __....... 以下是同种一系列这样的错误。 为何会出现这个问题呢? [编辑 - 12/18/02 by gyh2002] |
|
沙发#
发布于:2002-12-18 10:42
看看这些函数的声明、定义有没有问题?你的程序中是否包括了对他们的声明、定义。
|
|
板凳#
发布于:2002-12-18 11:05
同意楼上的看法,大概是因为声明、定义的函数未和工程环境链接上。
|
|
地板#
发布于:2002-12-18 12:49
看__netdev_watchdog_up是在那里定义的。是否导出了。
|
|
地下室#
发布于:2002-12-18 22:05
不光是这一个函数,我程序中的用到的函数都列出来同种错误,这些函数都是在我引用的头文件里定义的!我用gcc为什么就不会出现此类问题呢?这个是什么原因造成的呢?
|
|
5楼#
发布于:2002-12-19 10:17
***.o unresolved symbol __netdev_watchdog_up(这些都是我程序中用到的函数!)
***.o unrevolved symbol __....... 出现这种情况的原因是内核不支持这些函数.可以参考相应版本的内核的源代码进行适当的修改. ;) |
|
6楼#
发布于:2003-01-07 15:54
这是内核版本冲突引起的问题,你的内核版本肯定不是2.4.18-3,最简单的办法,用 \"insmod -f\" 来加载。
Good Luck! ^<^ |
|
|
7楼#
发布于:2003-01-11 15:46
我编一个makefile,如下: 这些都是你定义的函数????!!! 自己定义的函数,咋可以..... 自己定义的函数请不要以下划线开头!!! 改一下函数名,试一下!! |
|
|
8楼#
发布于:2003-03-26 10:02
你可以看看module 的导出表那一部分
就像是window下 的dll的export |
|
9楼#
发布于:2003-03-26 10:55
很简单,少了相关的系统的.o(驱动)没有加载!
|
|
10楼#
发布于:2003-03-28 20:17
用户被禁言,该主题自动屏蔽! |
|
11楼#
发布于:2003-03-31 09:09
我是学生,想学怎么写makefile文件,有这方面的书吗?
|
|