我从“hello-5.c”编译了(没有警告)的Linux内核模块编程指南示例,当我试图入侵它时,我收到了以下错误:
insmod: error inserting 'hello-5.ko': -1 Unknown symbol in module我想我应该尝试一下夹板,看看它是否出现了明显的错误,但是当我运行它时,我收到了大量来自内核头的警告,直到它试图解析asm/types.h为止。
anon@anon:~/kernel-source/lkmpg$ splint -I/lib/modules/$(uname -r)/build/include hello-5.c
Splint 3.1.1 --- 03 Nov 2006
( ... lots of warnings ... )
/lib/modules/2.6.24-24-insp8600/build/include/asm/types.h:13:24: Parse Error:
Suspect missing struct or union keyword: __signed__ :
unsigned short int. (For help on parse errors, see splint -help
parseerrors.)
*** Cannot continue.所以真的有两个问题:
发布于 2009-10-25 12:36:04
我不确定,但这可能是我要找的:
在Linux内核模块上使用夹板的讨论
它提供了一个定制的make文件来帮助夹板通过内核中使用的gcc特定的扩展。
发布于 2009-10-25 11:42:27
有趣的。目前,我正坐在办公室里,试图在Linux内核驱动程序上运行一个静态检查程序:)
静态检查程序很难处理linux内核,因为内核代码中使用的C方言比通常理解的"C语言“更广泛。有时,检查器的C前端不能解析代码中使用的不断变化的构造。
正如我所理解的,您只是使用了一个过时的检查器(03 Nov 2006)版本,但是您的内核版本也已经过时了,我不知道哪个版本更旧。如果检查器支持切换,那么可以帮助将检查器更新到其当前版本,或者使用最新的C前端。
此外,如果一个检查器可以处理Linux内核,那么这个事实就会在检查器的主页上被吹嘘。所以,选一个认领它的,然后做你的检查。
https://stackoverflow.com/questions/1620671
复制相似问题