这些是我在我的机器上编译 linux 源代码的步骤:
1. 将配置文件从 /boot 复制到 /usr/src/kernels/2.6.29.4-167.fc11.i586/ 目录
2. make oldconfig
3.制作
第 3 步失败,出现以下错误:make[1]: *** No rule to make target `missing-syscalls'。停止。
在 x86 机器上编译。有什么建议么 ?如果它不属于这里,请随时关闭此问题。
这些是我在我的机器上编译 linux 源代码的步骤:
1. 将配置文件从 /boot 复制到 /usr/src/kernels/2.6.29.4-167.fc11.i586/ 目录
2. make oldconfig
3.制作
第 3 步失败,出现以下错误:make[1]: *** No rule to make target `missing-syscalls'。停止。
在 x86 机器上编译。有什么建议么 ?如果它不属于这里,请随时关闭此问题。
尽管听起来很古老,但目前为了在系统上获取内核源代码,您必须手动选择所需的源代码。假设人们不像以前那样经常构建内核,当然您可能想要开发一个与您正在运行的版本不匹配的内核。
例如,我想在我的 CentOS 6.2 机器上安装 VBox,虽然大多数内核模块可以在没有完整源代码的情况下编译,但这次更新失败了。
所以我找到了这个 wiki 页面: http ://wiki.centos.org/HowTos/I_need_the_Kernel_Source
它没有列出 6.2 并且最终目录名称的命名约定已更改,因此要获取 6.2 内核源代码,您可以访问http://vault.centos.org/6.2/updates/Source/并选择您想要的版本。如果您想要不同版本的源代码,请访问http://vault.centos.org/并从那里导航。
文档建议不要在内核源代码上执行 rpm-build。
制作一个新的配置文件。可能老的不行了?
我无法回答为什么会发生此错误:
步骤 3 失败并出现以下错误:make[1]: *** No rule to make target `missing-syscalls'。停止。
但是我能够很好地编译香草版本,没有上述错误。我也对 serverfault 提出了同样的问题,其中对所采取的步骤进行了更详细的解释:https ://serverfault.com/questions/61354/missing-syscalls-error-during-kernel-compilation
从内核3.xx开始,如果尝试构建仅准备了单个 Makefile 的外部模块,则会出现此消息。
相反,根据本手册,
拆分为Kbuild(其中列出了所有源文件,例如):
obj-m := module_source.c
和简单的Makefile(只有默认的 make 指令,例如):
default:
$(MAKE) -C $(KDIR) M=$$PWD
将解决问题。
以防万一,外部模块构建指令如下:
make -C <kernel source path> -M=<module source folder>
例子:make -C . -M=extra/