首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以让Splint或类似的静态检查器与Linux内核模块一起工作?

是否有一种方法可以让Splint或类似的静态检查器与Linux内核模块一起工作?
EN

Stack Overflow用户
提问于 2009-10-25 11:30:30
回答 2查看 1.5K关注 0票数 3

我从“hello-5.c”编译了(没有警告)的Linux内核模块编程指南示例,当我试图入侵它时,我收到了以下错误:

代码语言:javascript
复制
insmod: error inserting 'hello-5.ko': -1 Unknown symbol in module

我想我应该尝试一下夹板,看看它是否出现了明显的错误,但是当我运行它时,我收到了大量来自内核头的警告,直到它试图解析asm/types.h为止。

代码语言:javascript
复制
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.

所以真的有两个问题:

  1. 如何修复不均匀的错误?
  2. 如何使夹板与内核标题保持良好的关系?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-25 12:36:04

我不确定,但这可能是我要找的:

在Linux内核模块上使用夹板的讨论

它提供了一个定制的make文件来帮助夹板通过内核中使用的gcc特定的扩展。

票数 1
EN

Stack Overflow用户

发布于 2009-10-25 11:42:27

有趣的。目前,我正坐在办公室里,试图在Linux内核驱动程序上运行一个静态检查程序:)

静态检查程序很难处理linux内核,因为内核代码中使用的C方言比通常理解的"C语言“更广泛。有时,检查器的C前端不能解析代码中使用的不断变化的构造。

正如我所理解的,您只是使用了一个过时的检查器(03 Nov 2006)版本,但是您的内核版本也已经过时了,我不知道哪个版本更旧。如果检查器支持切换,那么可以帮助将检查器更新到其当前版本,或者使用最新的C前端。

此外,如果一个检查器可以处理Linux内核,那么这个事实就会在检查器的主页上被吹嘘。所以,选一个认领它的,然后做你的检查。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1620671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档