Ami*_*yan 18 c c++ linux-kernel
当我开发一个可加载的内核模块(LKM)时,我应该使用C吗?
是否有可能在Linux上使用C语言以外的语言开发可加载的内核模块(LKM),例如C++?
del*_*ver 14
它可能在某种程度上,但要警告(来自http://www.tux.org/lkml/#s15-3):
用C++编写新的驱动程序是个好主意吗? 简短的回答是否定的,因为内核中没有对C++驱动程序的支持.
为什么不在内核中添加C++接口层来支持C++驱动程序? 简短的回答是为什么麻烦,因为Linux没有任何C++驱动程序.
我认为最好的想法是查阅现有的资源(有一些内核驱动程序书籍,包括一个免费的在线书籍),这些都在C中,找到基础知识,然后你可以尝试看看你是否可以让c ++工作那里.
但我非常怀疑这很容易.您甚至无法访问内核中的完整C标准库.需要考虑的事情:它不链接到共享库,总可执行映像通常为2-3 MB.
我很确定我在某个地方看到了一个内核配置选项,允许在内核模块中使用C++一段时间(但是再也找不到它).我可以看到某些模板在驱动程序模块中的使用非常有趣.仅仅是为了轶事:OS X Mach内核部分用C++编写.