免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5199 | 回复: 10
打印 上一主题 下一主题

有c程序,如何编译成自己的模块后加载? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-30 12:14 |只看该作者 |倒序浏览
20可用积分
我有c程序的驱动源程序,请问怎么编译成自己的模块加载到内核里面啊?

情况描述如下:

源程序是在2.6.15内核、gcc4.1.0下编译的,而我现在用的是2.6.25内核、gcc4.1.2,在Makefile中也对2.6内核有支持,但是我make的时候就提示错误,说是源程序中有错误。

如果把内核改为2.6.15,gcc也改成4.1.0的,则make、make insmod都能通过。

怀疑是gcc版本的问题。

现在我想在我当前的系统里面使用(2.6.25内核、gcc4.1.2),请问应该怎么办?是否需要修改Makefile中的代码? 应该怎么改呢?

附件里面是我们所用产品的驱动及相关资料,请朋友们帮忙看看啊。

万分感谢

dm6810_Linux_v2.0.0.tar.gz

36.51 KB, 下载次数: 53

最佳答案

查看完整内容

你需要声明的是一个int数组,应该改成这样就行了:static unsigned short io[DM6810_MAX_DEVS];static int irq[DM6810_MAX_DEVS];int maxdevs = DM6810_MAX_DEVS;module_param_array(io, ushort, &maxdevs, 0644);module_param_array(irq, int, &maxdevs, 0644);

论坛徽章:
0
2 [报告]
发表于 2009-12-30 12:14 |只看该作者
你需要声明的是一个int数组,应该改成这样就行了:

static unsigned short io[DM6810_MAX_DEVS];
static int irq[DM6810_MAX_DEVS];
int maxdevs = DM6810_MAX_DEVS;

module_param_array(io, ushort, &maxdevs, 0644);
module_param_array(irq, int, &maxdevs, 0644);

论坛徽章:
0
3 [报告]
发表于 2009-12-30 12:41 |只看该作者
应该是源程序问题,源程序里的一些函数可能在2.6.25中不存在了,你make出错,把相应的函数替换成2.6.25中有的类似函数。

论坛徽章:
0
4 [报告]
发表于 2009-12-30 14:56 |只看该作者
如下是出错的提示

还有一张是错误提示的两行源代码

请帮忙看看

12.jpg (64.82 KB, 下载次数: 13)

12.jpg

13.jpg (41.89 KB, 下载次数: 14)

13.jpg

论坛徽章:
0
5 [报告]
发表于 2009-12-30 16:14 |只看该作者
原帖由 xuyaosong 于 2009-12-30 14:56 发表
如下是出错的提示

还有一张是错误提示的两行源代码

请帮忙看看


kernel version 相差太多,很多api都变了。从你的错误提示中,request_irq就一个例子。

论坛徽章:
0
6 [报告]
发表于 2009-12-30 16:22 |只看该作者
先把这两行注释掉。
这两行没什么用,只是模块的参数

论坛徽章:
0
7 [报告]
发表于 2009-12-30 16:32 |只看该作者
我把出错的两行注释掉,然后make,警告仍然存在,但是错误就没有了,然后执行make insmod,但是提示

Unknown symbol in module.

我用dmesg看了一下,提示有:
rtd_dm6810:Unknown parameter "io"

前面的rtd_dm6810是文件名,后面的提示中的io就是我注释掉的一行中出现过的一个参数,因为注释掉后所以Unknown了,看了还是不能简单的注释掉。

请问这个MODULE_PRAM应该怎么改呢?
看到一些资料里面说这个函数已经out了,可能要用别的函数替代,这可有点难为我了,请各位亲朋好友帮忙看看吧。

论坛徽章:
0
8 [报告]
发表于 2009-12-30 16:39 |只看该作者
module_param(io, int, S_IRUGO);
改成这样就行了

论坛徽章:
0
9 [报告]
发表于 2009-12-30 16:41 |只看该作者

论坛徽章:
0
10 [报告]
发表于 2009-12-30 17:02 |只看该作者
老大,你太强了

五体投地啊,内牛满面啊

几天的问题,就这么几句就解决了啊,佩服的一塌糊涂

感激中
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP