在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) |