我的环境:Ubuntu18.04,内核:Linux5.3.0-53 vscode: lastest
命令,用于修复linux/module.h不找到asm/xxx.h
cd /usr/src/linux-headers-5.3.0-53/include
sudo ln -s asm-generic/ asm
我的c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include",
"/usr/local/include",
"/usr/src/linux-headers-5.3.0-53/include",
"/usr/src/linux-headers-5.3.0-53-generic/include",
"/usr/src/linux-headers-5.3.0-53/arch/x86/include",
"/usr/src/linux-headers-5.3.0-53/include/uapi",
"/usr/lib/gcc/x86_64-linux-gnu/7.5.0/include"
],
"defines": [
"__GNUC__",
"__KERNEL__"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu11",
"cppStandard": "gnu++14",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
我的hello_module.c,一个简单的Linux内核模块程序。
//a simple linux kernel module program.
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL"); //error here
static int hello_init(void){
printk(KERN_ALERT "hello world\n");
return 0;
}
static void hello_exit(void){
printk(KERN_ALERT "goodbye world\n");
}
module_init(hello_init);
module_exit(hello_exit);
然后错误:
identifier "KBUILD_MODNAME" is undefined
怎么修?请帮帮我..。
发布于 2020-05-30 20:21:09
KBUILD_MODNAME是在构建内核模块时由Makefile自动定义的,因此在内核头文件中找不到它。
若要阻止vscode抱怨未定义的KBUILD_MODNAME标识符,只需将虚拟定义添加到“定义”部分中的文件中。
"defines": [
"KBUILD_MODNAME=\"hello_module\"",
"__GNUC__",
"__KERNEL__"
],
这应该会使vscode高兴=)
您为KBUILD_MODNAME定义的值并不重要,因为它是在生成过程中自动定义的。
我不明白这是您唯一的问题,还是您在编译模块时也有问题。如果是的话,让我知道,我们也会想出解决办法的!
https://stackoverflow.com/questions/61984162
复制相似问题