c - 错误: Unknown symbol in module?

标签 c kernel-module insmod

我写了一个简单的Linux内核模块:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/reboot.h>

static int my_init(void)
{
    machine_power_off();
    return  0;
}

static void my_exit(void)
{
    return;
}

module_init(my_init);
module_exit(my_exit);

源代码编译成功,但安装模块(insmod)后出现以下错误:

Error: could not insert module my_module.ko: Unknown symbol in module

系统日志错误:

Jun 25 21:50:00 my-virtual-machine kernel: [31625.207827] my_module: Unknown symbol machine_power_off (err 0)

如何解决这个错误?

机器电源关闭:

http://lxr.free-electrons.com/ident?i=machine_power_off

最佳答案

@Amir,遍历了 Linux 内核中的文件,w.r.t.使用 ma​​chine_power_off() 的所有架构文件,它不会导出,因此不能在您的模块中使用。

关于c - 错误: Unknown symbol in module?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303557/

相关文章:

c - 在 C 程序上运行 perl 脚本时,我得到 GLOB(0x1a6a8830) 作为我的输出

c - int8_t、int_least8_t 和 int_fast8_t 的区别?

float 计算 : When to Round?

c - 尝试使用 iw_statistics 结构但遇到问题?

linux-kernel - 进行系统调用以获取进程列表

linux-device-driver - add_disk() 卡在 insmod 上

c - 无法 insmod 或使用内核间模块

c - 功能指针,设计

在 kernel_fpu_end 之前调用 kernel_fpu_begin 两次

用于生成随机数的字符设备实现