多個源文件編譯生成一個內(nèi)核模塊
例如,將hello.c和world.c兩個c文件編譯生成一個叫hello_world.o的目標文件,則在Makefile中添加以下兩句:
obj-m:=hello_world.o
hello_world-objs=hello.cworld.c
內(nèi)核污染
insmod ko模塊時,可能出現(xiàn)如下提示:
loadingout-of-tree
module
taintskernel
幾個可能原因:
-
模塊沒有聲明
GPL協(xié)議 - 當前linux內(nèi)核版本和編譯模塊使用的內(nèi)核版本不一致
- 使用內(nèi)核源代碼未包含的樹外模塊
printk和printf
在內(nèi)核中的打印函數(shù)是printk,printk和printf的行為非常相似,但是通常printk不支持浮點數(shù),例如要打印一個浮點變量,在編譯時通常會出現(xiàn)如下警告,并且模塊也不會加載成功:
WARNING:
"__extendsfdf2"
[/home/ubuntu/driver/user.ko]undefined!
WARNING:
"__truncdfsf2"
[/home/ubuntu/driver/user.ko]undefined!
WARNING:
"__divdf32"
[/home/ubuntu/driver/user.ko]undefined!
WARNING:
"__floatsidf"
[/home/ubuntu/driver/user.ko]undefined!
-
模塊
+關(guān)注
關(guān)注
7文章
2837瀏覽量
53283 -
內(nèi)核
+關(guān)注
關(guān)注
4文章
1467瀏覽量
42872 -
Linux
+關(guān)注
關(guān)注
88文章
11758瀏覽量
219009 -
源文件
+關(guān)注
關(guān)注
0文章
30瀏覽量
4892
發(fā)布評論請先 登錄
Linux 內(nèi)核模塊工作原理及內(nèi)核模塊編譯案例
讓ChatGPT寫一個內(nèi)核模塊
linux內(nèi)核配置過程中的"編譯好的內(nèi)核模塊"是哪個
高效學習Linux內(nèi)核——內(nèi)核模塊編譯
在Linux 2.6內(nèi)核下編譯可以加載的內(nèi)核模塊解析
內(nèi)核模塊的原理以及其模塊編寫
什么是內(nèi)核模塊?如何編寫一個簡單的模塊?
什么是 Linux 內(nèi)核模塊?
如何在Petalinux創(chuàng)建Linux內(nèi)核模塊?
嵌入式LINUX系統(tǒng)內(nèi)核和內(nèi)核模塊調(diào)試
內(nèi)核模塊知識:多個源文件編譯生成一個內(nèi)核模塊
評論