多個(gè)源文件編譯生成一個(gè)內(nèi)核模塊
例如,將hello.c和world.c兩個(gè)c文件編譯生成一個(gè)叫hello_world.o的目標(biāo)文件,則在Makefile
中添加以下兩句:
obj-m:=hello_world.o
hello_world-objs=hello.cworld.c
內(nèi)核污染
insmod
ko模塊時(shí),可能出現(xiàn)如下提示:
loadingout-of-tree
module
taintskernel
幾個(gè)可能原因:
-
模塊沒有聲明
GPL
協(xié)議 - 當(dāng)前linux內(nèi)核版本和編譯模塊使用的內(nèi)核版本不一致
- 使用內(nèi)核源代碼未包含的樹外模塊
printk和printf
在內(nèi)核中的打印函數(shù)是printk
,printk
和printf
的行為非常相似,但是通常printk不支持浮點(diǎn)數(shù),例如要打印一個(gè)浮點(diǎn)變量,在編譯時(shí)通常會(huì)出現(xiàn)如下警告,并且模塊也不會(huì)加載成功:
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文章
2695瀏覽量
47433 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1372瀏覽量
40280 -
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209335 -
源文件
+關(guān)注
關(guān)注
0文章
30瀏覽量
4586
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論