免费注册 查看新帖 |

Chinaunix

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

insmod发生的不能识别printk [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-29 14:25 |只看该作者 |倒序浏览
在opencores交叉编译环境
insmod hello.o
insmod: unresolved symbol _printk

论坛徽章:
0
2 [报告]
发表于 2006-11-29 14:48 |只看该作者
楼主是在fpga上跑linux的吗?

我的2.6.18也没有_printk这个符号啊

论坛徽章:
0
3 [报告]
发表于 2006-11-29 15:26 |只看该作者
是的
是在fpga上跑的
我的是2.4
你的2.6 insmod有这个问题吗

论坛徽章:
0
4 [报告]
发表于 2006-11-30 11:13 |只看该作者
cat /proc/ksyms|grep printk,结果是啥?

论坛徽章:
0
5 [报告]
发表于 2006-11-30 14:27 |只看该作者
>cat ksyms |grep printk
c0011a38 printk

论坛徽章:
0
6 [报告]
发表于 2006-11-30 14:32 |只看该作者
这个问题一般是你内核编译的时候使用了function version的功能,而你编译你模块的时候没使用,或者相反。

论坛徽章:
0
7 [报告]
发表于 2006-11-30 15:44 |只看该作者
没有明白,非常感谢!
我的编译
or32-elf-gcc -c -Wall -D__KERNEL__ -DMODULE -I /home/zxfan/linux-2.4/include/ hello.c

论坛徽章:
0
8 [报告]
发表于 2006-12-01 15:03 |只看该作者
我看了insmod代码,发现代码中是分析hello.o这个文件出现了错误:
hello.o中最后的部分是
000003C0   00 5F 5F 5F  6D 6F 64 75  6C 65 5F 6B  65 72 6E 65  .___module_kerne
000003D0   6C 5F 76 65  72 73 69 6F  6E 00 5F 69  6E 69 74 5F  l_version._init_
000003E0   6D 6F 64 75  6C 65 00 5F  70 72 69 6E  74 6B 00 5F  module._printk._
000003F0   63 6C 65 61  6E 75 70 5F  6D 6F 64 75  6C 65 00 00  cleanup_module

>cat ksyms |grep printk
c0011a38 printk
在hello.o中是_printk
所以无法识别_printk这个符号

论坛徽章:
0
9 [报告]
发表于 2006-12-01 15:05 |只看该作者
但为什么编译之后的hello.o中本应是printk的,会出现_printk呢
我用hexedit修改了hello.o,就可以运行下去了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP