Tha*_*wan 3 architecture linux-kernel
当我尝试在Ubuntu计算机中启用PPP时,在menuconfig尝试制作内核后发生以下错误:
$ sudo make
Run Code Online (Sandbox Code Playgroud)
make [1]:***没有规则来创建目标arch / x86 / entry / syscalls / syscall_32.tbl,而arch / x86 / entry / syscalls /../../ include / generation / asm / syscalls_32.h'。停止。
make:*** [archheaders]错误2
使用了Ubuntu版本linux-headers-4.2.0-27-generic。
请帮助我修复它。
小智 6
使用时可能是语法错误$(PWD)。考虑更改此:
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
Run Code Online (Sandbox Code Playgroud)
对此:
all:
$(MAKE) -C $(KDIR) M=$(shell pwd) modules
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题。
简洁版本:
这不是您正在构建的完整内核。也许只是标题,或者其他不完整的东西。确保它是完整的内核源代码。
长版:
不确定 Ubuntu 的做法...似乎正常的方法在 ubuntu 上不起作用,例如仅适用于模块(不是您想要的):
apt-get install linux-headers-...
cd /lib/modules/$(uname -r)/build
make modules_prepare
Run Code Online (Sandbox Code Playgroud)
或者对于像你想要的整个内核,也对我不起作用(Ubuntu 16.04):
apt-get install linux-source-...
cd /lib/modules/$(uname -r)/build
make menuconfig
make bindeb-pkg
Run Code Online (Sandbox Code Playgroud)
(请注意,这make bindeb-pkg不是纯粹的 ubuntu/debian 构建方式...您使用命令make-kpkg或其他东西)
他们没有为您制作构建链接,如果您在那里符号链接标头并复制 .config 文件,则构建会像您一样失败。所以这是我到目前为止的替代方案,例如。对于内核为 4.4.16 的 ubuntu 16.04):
cd /usr/src
apt-get source linux-image-4.4.0
cd linux-4.4.16
cp /boot/config-$(uname -r) .config
make modules_prepare
Run Code Online (Sandbox Code Playgroud)
但最后一种方法适用于与正在运行的内核不匹配的内核...我不知道这是否适合你(它不适合我,构建一个树外模块,所以我也这样做了make bindeb-pkg并且dpkg -i ../linux-...安装了结果)
apt-get source ...对于 ubuntu 源代码,除了使用 之外,您还可以从 kernel.org 或通过 git 获取 tgz 文件形式的普通源代码。