当前位置: 技术问答>linux和unix
linux内核浮点的问题
来源: 互联网 发布时间:2016-07-12
本文导语: 我在编程中使用了浮点,为了计算一个比率,这个数字是连个很大并且很相近的数字相除得到的,所以结果很接近1,所以需要用浮点来或得精确结果。我想过用long来代替,但结果溢出。 只要我使用long long 或者floatd...
我在编程中使用了浮点,为了计算一个比率,这个数字是连个很大并且很相近的数字相除得到的,所以结果很接近1,所以需要用浮点来或得精确结果。我想过用long来代替,但结果溢出。
只要我使用long long 或者floatdouble编译时提示warning:
WARNING: "__divsf3" [/root/avb/avb_as_zb/avb_as.ko] undefined!
WARNING: "__floatsisf" [/root/avb/avb_as_zb/avb_as.ko] undefined!
虽然warning算编译通过,但是在插入insmod的时候提示
insmod: error inserting 'avb_as.ko': -1 Unknown symbol in module
无法插入运行!请问这个问题应该如何解决?
只要我使用long long 或者floatdouble编译时提示warning:
WARNING: "__divsf3" [/root/avb/avb_as_zb/avb_as.ko] undefined!
WARNING: "__floatsisf" [/root/avb/avb_as_zb/avb_as.ko] undefined!
虽然warning算编译通过,但是在插入insmod的时候提示
insmod: error inserting 'avb_as.ko': -1 Unknown symbol in module
无法插入运行!请问这个问题应该如何解决?
|
楼主,这个时候建议用大数库就可以了。
介绍你一个:gmp大数库,很好用,比较小,还是C++接口。
介绍你一个:gmp大数库,很好用,比较小,还是C++接口。
|
就是说你要的两个函数在你的平台上面没有定义(某些平台会有),你要做这种操作的话,要自己写代码。
|
__divsf3
__floatsisf
查查看这两个函数是不是有什么宏定义了。
__floatsisf
查查看这两个函数是不是有什么宏定义了。
|
很好的
|
不建议在内核中使用浮点,否则需要自己实现浮点处理器访问。这个在linux内核设计与实现一书中有说明!
|
不要使用浮点,或使用软浮点来编译内核,可能要自行编译gcc
|
在内核中能用浮点数?期待高手。。。