如何为linux内核模块开发配置clang_complete?
发布时间:2020-12-13 23:02:47 所属栏目:Linux 来源:网络整理
导读:我试图让 gcc到 dump the include paths,我的 .clang_complete 文件现在看起来像: -std=gnu89-nostdinc-I/usr/src/linux-headers-3.0.0-16-generic/arch/x86/include-I/lib/modules/3.0.0-16-generic/build/arch/x86/include/generated-I/lib/modules/3.0.0
我试图让
gcc到
dump the include paths,我的
.clang_complete 文件现在看起来像:
-std=gnu89 -nostdinc -I/usr/src/linux-headers-3.0.0-16-generic/arch/x86/include -I/lib/modules/3.0.0-16-generic/build/arch/x86/include/generated -I/lib/modules/3.0.0-16-generic/build/include -I/lib/modules/3.0.0-16-generic/build/ubuntu/include -I/usr/lib/gcc/i686-linux-gnu/4.6.1/include -D__KERNEL__ -DMODULE 但是,libclang仍然抱怨大量的错误.编辑简单的hello world内核模块时发出警告. 1 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|24 col 42 warning| declaration of 'struct list_head' will not be visible outside of this function 2 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|26 col 6 error| incomplete definition of type 'struct list_head' 3 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|24 col 42 info| forward declaration of 'struct list_head' 4 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|27 col 6 error| incomplete definition of type 'struct list_head' 5 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|24 col 42 info| forward declaration of 'struct list_head' 6 /lib/modules/3.0.0-16-generic/build/include/linux/list.h|37 col 38 warning| declaration of 'struct list_head' will not be visible outside of this function ... 从< linux / types.h>中定义struct list_head;已包含在< linux / list.h>中.两者都在/lib/modules/3.0.0-16-generic/build/include中 解决方法
与clang_complete捆绑在一起的cc_args.py可能对您有用.它应该构建一个有效的.clang_complete文件.不幸的是(我刚试过它,我会尝试修复它),它在这里不起作用(无法创建.clang_complete文件).
但是,通过调整脚本及其结果,我已经能够生成有效的.clang_complete文件: -D__KERNEL__ -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -nostdinc -I/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.3/include -I/usr/src/linux-3.2.12-1-ARCH/arch/x86/include -I/usr/src/linux-3.2.12-1-ARCH/arch/x86/include/generated -I/usr/src/linux-3.2.12-1-ARCH/include -DMODULE -DKBUILD_STR(s)=#s -include /usr/src/linux-3.2.12-1-ARCH/include/linux/kconfig.h 使用此.clang_complete,只剩下一个与__kfree_rcu相关的错误,有关它的更多信息,请参阅:https://lkml.org/lkml/2012/1/12/2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读