c - 编译linux内核报 'make: *** [modules_install] Error 1'错误如何解决?

标签 c linux linux-kernel

我想在 linux 内核 3.14.61 中添加一个系统调用来打印“hello world”。
首先,我下载了内核 3.14.61 源代码,然后按照以下步骤操作。

1- 我将 316 64 hello sys_hello 行添加到 arch/x86/syscalls/syscall_64.tbl 文件。

2- 然后我将 asmlinkage long sys_hello(void); 行添加到 include/linux/syscalls.h 文件。

3- 我在 kernel 中创建了一个名为 hello.c 的新文件。 hello.c 文件的地址是kernel/hello.c,我把这个放在里面:

#include <linux/kernel.h>

asmlinkage long sys_hello(void) {
    printk("hello world\n");
    return 0;
}

4- 然后我将 hello.o 添加到 obj-y 末尾的 kernel/Makefile 中,如下所示:

obj-y     = fork.o exec_domain.o panic.o \
    cpu.o exit.o itimer.o time.o softirq.o resource.o \
    sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \
    signal.o sys.o kmod.o workqueue.o pid.o task_work.o \
    extable.o params.o posix-timers.o \
    kthread.o sys_ni.o posix-cpu-timers.o \
    hrtimer.o nsproxy.o \
    notifier.o ksysfs.o cred.o reboot.o \
    async.o range.o groups.o smpboot.o hello.o

5- 在前 4 个步骤之后,我尝试编译自定义内核。所以我一个一个地运行了这些命令:

‫‪make‬‬ ‫‪localmodconfig‬‬
make oldconfig
‫‪make‬‬ ‫‪–j2‬‬
‫‪sudo‬‬ ‫‪make‬‬ ‫‪modules_install‬‬

但是当我运行最后一个命令(sudo make modules_install)时,我看到了这个错误:

The present kernel configuration has modules disabled.
Type 'make config' and enable loadable module support.
Then build a kernel with module support enabled.

make: *** [modules_install] Error 1

我该如何解决?

最佳答案

显然,您的内核配置禁用了可加载模块,因此安装它们没有多大意义。

您的内核配置可能有问题。

关于c - 编译linux内核报 'make: *** [modules_install] Error 1'错误如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779677/

相关文章:

c - 定义数组时出错

linux - 为Linux中的内存映射文件保留物理内存

linux - Shell 脚本需要整数表达式

c - 大型缓冲区的 mmap 失败

linux - 在 Linux 内核模块中制作 ICMP 数据包

linux - 如何从主内存/RAM 中删除数据

c - 如何以编程方式获取应用程序的名称?

c++ - 缓存刷新例程之间的时间不一致

c - LibXML2 中有 "binary dump"或 "get binary representation"函数吗?

c++ - 仅检查共享库中的内存问题(例如 Apache 模块)