簡體   English   中英

是否可以在Linux上使用C ++開發可加載的內核模塊(LKM)?

[英]Is it possible to develop a loadable kernel module (LKM) on Linux with C++?

當我開發一個可加載的內核模塊(LKM)時,我應該使用C嗎?

是否有可能在Linux上使用C語言以外的語言開發可加載的內核模塊(LKM),例如C ++?

它可能在某種程度上,但要警告(來自http://www.tux.org/lkml/#s15-3 ):

用C ++編寫新的驅動程序是個好主意嗎? 簡短的回答是否定的,因為內核中沒有對C ++驅動程序的支持。

為什么不在內核中添加C ++接口層來支持C ++驅動程序? 簡短的回答是為什么麻煩,因為Linux沒有任何C ++驅動程序。

我認為最好的想法是查閱現有的資源(有一些內核驅動程序書籍,包括一個免費的在線書籍),這些都在C中,找到基礎知識,然后你可以嘗試看看你是否可以讓c ++工作那里。

但我非常懷疑這很容易。 您甚至無法訪問內核中的完整C標准庫。 需要考慮的事情:它不鏈接到共享庫,總可執行映像通常為2-3 MB。

我很確定我在某個地方看到了一個內核配置選項,允許在內核模塊中使用C ++一段時間(但是再也找不到它)。 我可以看到某些模板在驅動程序模塊中的使用非常有趣。 僅僅是為了軼事:OS X Mach內核部分用C ++編寫。

最后,它歸結為目標代碼,它由Assembler生成並在之后鏈接在一起。

所以是的,有可能,你在這里找到關於它的辯論。

這取決於你想用LKM做什么,你想為自己和一些實驗使用它還是會在任何地方變得高效?

有一個操作系統用C ++重寫Linux內核,它叫做Boss-Mool,你可以用C ++編寫驅動程序。 這是鏈接: https//www.bosslinux.in/boss-mool

好吧,最初的問題是針對Linux,而不是OS X或Windows等等。

絕對沒有辦法在C ++中編寫Linux內核模式驅動程序! 那是因為您需要鏈接libstdc ++,它不會與您的模塊鏈接。 libstdc ++不適用於內核模式,就這么簡單!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM