You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

交叉编译Linux内核时自定义驱动未编译问题求助

内核驱动未被编译的问题排查

问题描述

我正在学习Linux,尝试将自行编写的简单驱动集成到内核中进行arm64架构交叉编译,但驱动未被编译——编译输出中无相关文件的编译日志,也未生成对应的驱动文件。我已将驱动添加到配置菜单,.config中已开启CONFIG_ANSWER=y,也尝试修改了文件权限,但问题依旧。同时想确认:若驱动代码存在错误,是否会在编译输出中显示?请问我哪里操作有误?

相关文件内容

drivers/misc/answer.c

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
 
/* Module Init function */
static int __init hello_world_init(void)
{
    printk(KERN_INFO "This is the Simple Module\n");
    printk(KERN_INFO "Kernel Module Inserted Successfully...\n");
    return 0;
}
/* Module Exit function */
static void __exit hello_world_exit(void)
{
    printk(KERN_INFO "Kernel Module Removed Successfully...\n");
}
 
module_init(hello_world_init);
module_exit(hello_world_exit);
 
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("A simple hello world driver");
MODULE_VERSION("2:1.0");

drivers/misc/Makefile

...
odj-$(CONFIG_ANSWER)            += answer.o
...

drivers/misc/Kconfig

...
config ANSWER
        tristate "Add the answer"
        help
                my module
...

.config

...
# Misc devices
CONFIG_ANSWER=y
...

编译命令

$ sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

问题排查与解答

  1. 最直接的错误:Makefile拼写错误
    你在drivers/misc/Makefile中写的是odj-$(CONFIG_ANSWER),这是拼写错误,正确的应该是obj-$(CONFIG_ANSWER)。内核构建系统通过obj-前缀识别要编译的目标文件规则,拼写错误会导致构建系统完全忽略这条规则,所以即使CONFIG_ANSWER=y,也不会编译answer.c。

  2. 关于代码错误的输出问题
    如果驱动代码存在语法错误、未定义符号或其他编译错误,编译过程中会在输出中显示明确的错误信息,严重的错误甚至会直接终止编译流程。你当前的情况没有任何编译输出,说明构建系统根本没触发该文件的编译,不是代码本身的问题。

  3. 其他可能的排查点

    • 确认上层目录的Makefile是否包含misc子目录:检查drivers/Makefile中是否有obj-y += misc/(内核默认会包含,但若被修改过可能影响)
    • 清理构建缓存后重新编译:执行make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- clean,再重新运行编译命令,避免旧缓存干扰
    • 明确驱动的编译类型:当前CONFIG_ANSWER=y表示将驱动内置到内核镜像(Image)中,不会生成单独的.ko模块文件;如果需要生成可加载模块,需将CONFIG_ANSWER设为m,此时编译后会在drivers/misc/目录下生成answer.ko

内容的提问来源于stack exchange,提问作者Mykola Grodskyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 01:44:57