64位系统中内核模块中的C ++支持

时间:2011-07-28 14:34:34

标签: c++ linux kernel-module

我知道内核模块不推荐使用C ++,但是,我们有一个用C和C ++文件混合编写的模块,该模块在32位系统(内核2.6)中运行良好,现在我们正在尝试移植模块到64位系统,在64位系统中根本不支持C ++吗?

2 个答案:

答案 0 :(得分:2)

这不是64位是否支持语言的问题,而是库和其他代码是否可移植。

答案 1 :(得分:2)

粗略地说,要在内核中使用C ++,您应该摆脱所有C ++运行时库依赖关系,首先,您应该重新实现new/delete并删除异常处理(使用-fno-exceptions编译)。实际上,如果32位代码有效,那么这些简单的情况必须已经解决。

尝试编译并加载模块。如果幸运的话,就不会出现链接错误,并且您很有可能使模块工作(模块化通常的跨平台问题集,例如结构大小和对齐)。如果不是,您将收到一个未定义符号列表,这些符号将提示您应该实施或解决的内容。