当我尝试在Ubuntu机器上启用PPP时,在menuconfig
之后发生以下错误并尝试创建内核:
$ sudo make
make [1]:***没有规则来制作目标`arch / x86 / entry / syscalls / syscall_32.tbl',需要`arch / x86 / entry / syscalls /../../ include / generated /asm/syscalls_32.h”。停止。
make:*** [archheaders]错误2
使用了Ubuntu版本linux-headers-4.2.0-27-generic。
请帮我解决。
答案 0 :(得分:5)
使用$(PWD)
时,这可能是语法错误。考虑改变这个:
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
到此:
all:
$(MAKE) -C $(KDIR) M=$(shell pwd) modules
这解决了我的问题。
答案 1 :(得分:1)
简短版:
这不是您正在构建的完整内核。也许它只是标题,或其他不完整的东西。确保它是完整的内核源代码。
长版:
不确定在Ubuntu上这样做...看起来正常的方式对ubuntu不起作用,例如只是模块(不是你想要的):
apt-get install linux-headers-...
cd /lib/modules/$(uname -r)/build
make modules_prepare
或者对于你想要的整个内核,也不适用于我(Ubuntu 16.04):
apt-get install linux-source-...
cd /lib/modules/$(uname -r)/build
make menuconfig
make bindeb-pkg
(注意make bindeb-pkg
不是纯粹的ubuntu / debian构建方式......你使用make-kpkg
命令或其他东西)
他们没有为您制作构建链接,如果您在那里符号链接并复制.config文件,则构建将失败。所以这是我到目前为止的替代方案,例如。 ubuntu 16.04 with kernel 4.4.16):
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
但是最后一个方法是针对与正在运行的内核不匹配的内核...我不知道这是否适合你(它不适合我,构建一个out of tree模块,所以我也make bindeb-pkg
和dpkg -i ../linux-...
安装了结果)
使用apt-get source ...
的替代方法,对于ubuntu源,您可以从kernel.org或git获取vanilla源作为tgz文件。
答案 2 :(得分:0)
在尝试为 ARM Raspberry Pi 构建 mt7610u WIFI 驱动程序时,我收到了类似的消息。阅读 README.md 并按照文件开头的说明进行操作。请注意,它在下载 linux 内核源代码然后构建它时确实需要大约 900Mb 的可用空间。
#prepare kernel source code
..if you get this error: no rule, for target „arch/arm/tools/syscall.tbl“,
needed from „arch/arm/include/generated/uapi/asm/unistd-common.h“
For new kernel versions 5+ you need to download the latest rpi-sources to fix it:
$ sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source
$ sudo chmod +x /usr/bin/rpi-source
$ /usr/bin/rpi-source -q --tag-update
$ rpi-source
if you get any question just answer with [y]