首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编译内核模块时未定义的"__aeabi_ldivmod“

编译内核模块时未定义的"__aeabi_ldivmod“
EN

Stack Overflow用户
提问于 2014-09-02 12:55:39
回答 1查看 9.1K关注 0票数 9

我试图在raspberry pi上编译一个内核模块(这是我自己编写的)。我正在目标环境中编译它。

我得到以下输出:

代码语言:javascript
运行
复制
make -C /lib/modules/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708/build M=/home/harmic/horus/ppminput modules
make[1]: Entering directory `/usr/src/kernels/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708'
  CC [M]  /home/harmic/horus/ppminput/ppminput.o
  Building modules, stage 2.
  MODPOST 1 modules
WARNING: "__aeabi_ldivmod" [/home/harmic/horus/ppminput/ppminput.ko] undefined!
  CC      /home/harmic/horus/ppminput/ppminput.mod.o
  LD [M]  /home/harmic/horus/ppminput/ppminput.ko
make[1]: Leaving directory `/usr/src/kernels/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708'

当然,如果我尝试插入模块,就会得到:

代码语言:javascript
运行
复制
insmod: ERROR: could not insert module ./ppminput.ko: Unknown symbol in module

在syslog:

代码语言:javascript
运行
复制
Sep  2 22:44:26 pidora kernel: [ 7589.354709] ppminput: Unknown symbol __aeabi_ldivmod (err 0)

在我的模块中,我确定了引起问题的行:

代码语言:javascript
运行
复制
unsigned int chan_abs_val = tdiff / CHAN_SCALE;

(其中tdiff是一个s64,而CHAN_SCALE是一个整数文本)。

如果我把分歧说出来,问题就解决了。这是我模块中唯一使用除法的行。

googling搜索了一些关于这个问题的引用,但是在编译内核模块的上下文中找不到。

我的makefile看起来如下:

代码语言:javascript
运行
复制
obj-m += ppminput.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

环境详情:

  • Pi正在运行Pidora 2014 (Fedora 20)。
  • 内核是3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708.
  • gcc是4.8.2岁。

更新

我显然没有使用正确的术语进行搜索。又一次搜寻已经购买了许多参考资料,但没有解决方案。阅读它们,我得到的意见是,如果想要编译ARM,就不应该在内核中进行任何64位的除法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-03 08:28:29

在大多数32位CPU上,64位划分必须使用一个缓慢的库函数来实现.为了防止编译器生成不明显的缓慢代码,Linux没有实现这些函数。

如果你想做64位的除法,你必须显式地做它们。使用来自<asm/div64.h><asm/div64.h>

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25623956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档