Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56489
  • 博文数量: 19
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 177
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-25 21:11
文章分类

全部博文(19)

文章存档

2011年(1)

2009年(18)

我的朋友

分类:

2009-05-07 17:00:10

在RTAI中添加了一个除法的代码,编译可以通过但是在insmod的时候会出现这样的错误:unresolved symbols __divdi3。
原因:除法语句中含有"long long"或者"float/double"的变量。long long除法至少在传统x86上是不支持,应该使用一些函数(库)调用。由于你工作在内核空间不能访问C库中的函数,所以必须使用自己的除法算法或者使用RTAI提供的函数。
解决方法:
1.使用rtai提供的long long数学函数。如:rtai_ulldiv,rtai_imuldiv,rtai_llimd。这些可以在“include/asm-i386/rtai_hal.h”中找到例子。
2.在makefile中增加如下语句
ar x `gcc -print-libgcc-file-name` _moddi3.oS
ld -m elf_i386 -r -o modulname.o $(OBJECTS) _moddi3.oS
阅读(2633) | 评论(0) | 转发(0) |
0

上一篇:bash执行权限问题

下一篇:extern的简单应用

给主人留下些什么吧!~~