64位系统内核模块支持c++

C++ support in kernel module in 64-bit system

本文关键字:c++ 支持 内核模块 系统 64位      更新时间:2023-10-16

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

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

试着编译并加载模块。如果幸运的话,将不会有链接错误,并且您有很好的机会让模块工作(模除通常的跨平台问题集,如结构大小和对齐)。如果你没有,你会收到一个未定义的符号列表,它会给你一个应该实现或工作的提示。

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