免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2891 | 回复: 5

写交叉编译环境下驱动程序的问题!! [复制链接]

论坛徽章:
0
发表于 2008-10-29 14:56 |显示全部楼层
今天用交叉编译工具去编译一个mips下的驱动程序,结果报出浮点错,后来发现是因为拿到别人给的内核后没有先再编译一次内核(自己编译一次内核就可以了)
但是拿到的内核肯定是被编译过的,因为有生成的内核image在,但是可能被clean过了,所以找不到那些.o或.mod文件了

我的问题是,一直没找到编驱动的时候,会去找内核树中的什么关键性文件,导致如果内核树没经过编译,那在此内核树下编译驱动也会出错?
是Module.symvers吗?还是里面生成的一些基本的驱动文件呢?
请高手解答一下!

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-10-29 15:50 |显示全部楼层
MIPS似乎不支持浮点。而且,LZ应该清楚,内核中的代码应避免是用浮点操作。

论坛徽章:
0
发表于 2008-10-29 16:12 |显示全部楼层
代码中并没有用到浮点的~如果是因为代码的问题,那应该在编译源文件的时候出错的
现在报错是在.o文件已经生成后。
现在想想可能是之前编译过内核的人是在其他平台上编的吧~~


就是想问问有没有高手能指教一下编译生成模块的时候会用到内核源码树中的哪些文件呢(关键的文件就行了,头文件除外)
或者说生成一个模块的时候,具体的过程是什么样的呢?
(比如,第一阶段先是编译源文件,如.c文件,生成对应的.o文件以及.mod.c文件,第二阶段,会将之前生成的.mod.c编译成对应的.mod.o文件,然后LD成模块文件.ko)这里第二阶段是如何实现的呢?好象有用到内核中的一些script,还有配置文件之类的?

[ 本帖最后由 cloudice 于 2008-10-29 16:16 编辑 ]

论坛徽章:
0
发表于 2008-10-29 17:34 |显示全部楼层
好象我认识的编译过程有点不准确,看了一下内核目录树下的Makefile.modpost文件,那里面讲的很详细~
有兴趣的可以参考~

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-10-29 18:09 |显示全部楼层
原帖由 cloudice 于 2008-10-29 16:12 发表
代码中并没有用到浮点的~如果是因为代码的问题,那应该在编译源文件的时候出错的
现在报错是在.o文件已经生成后。
现在想想可能是之前编译过内核的人是在其他平台上编的吧~~


就是想问问有没有高手能指教 ...



关键问题时,你需要搞明白你编译什么东西,编译不同的东西用到的内核文件是不一样的,这个没有一个普适性的东西可供你当作万能的工具。

论坛徽章:
0
发表于 2008-10-31 09:20 |显示全部楼层

回复 #5 dreamice 的帖子

目的是编译出一个模块文件,这跟你要编译的源有什么关系呢~我说过是要问有关的编译过程的文件,不包括用到的内核头文件~~

你觉得“编译出一个模块的过程”会跟你编译的东西有关系么?要不你跟踪你make的时候看编译怎么走的,就会看到它要去检查内核中哪些文件,然后分哪几个过程来生成一个模块文件。
不知道我说的有什么不妥,也没明白你的意思,不过我确实可以看到整个过程~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP