首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ubuntu18.04 vscode内核模块程序错误:标识符"KBUILD_MODNAME“未定义

ubuntu18.04 vscode内核模块程序错误:标识符"KBUILD_MODNAME“未定义
EN

Stack Overflow用户
提问于 2020-05-24 09:45:01
回答 1查看 1.4K关注 0票数 2

我的环境:Ubuntu18.04,内核:Linux5.3.0-53 vscode: lastest

命令,用于修复linux/module.h不找到asm/xxx.h

代码语言:javascript
复制
cd /usr/src/linux-headers-5.3.0-53/include

sudo ln -s asm-generic/ asm

我的c_cpp_properties.json

代码语言:javascript
复制
{
    "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内核模块程序。

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

然后错误:

代码语言:javascript
复制
identifier "KBUILD_MODNAME" is undefined

怎么修?请帮帮我..。

EN

回答 1

Stack Overflow用户

发布于 2020-05-30 20:21:09

KBUILD_MODNAME是在构建内核模块时由Makefile自动定义的,因此在内核头文件中找不到它。

若要阻止vscode抱怨未定义的KBUILD_MODNAME标识符,只需将虚拟定义添加到“定义”部分中的文件中。

代码语言:javascript
复制
"defines": [
    "KBUILD_MODNAME=\"hello_module\"",
    "__GNUC__",
    "__KERNEL__"
],                

这应该会使vscode高兴=)

您为KBUILD_MODNAME定义的值并不重要,因为它是在生成过程中自动定义的。

我不明白这是您唯一的问题,还是您在编译模块时也有问题。如果是的话,让我知道,我们也会想出解决办法的!

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

https://stackoverflow.com/questions/61984162

复制
相关文章

相似问题

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