没有规则来制作目标“arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h”需要的目标“arch/x86/entry/sys
Posted
技术标签:
【中文标题】没有规则来制作目标“arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h”需要的目标“arch/x86/entry/syscalls/syscall_32.tbl”【英文标题】:No rule to make target `arch/x86/entry/syscalls/syscall_32.tbl', needed by `arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h' 【发布时间】:2016-12-30 16:10:44 【问题描述】:当我尝试在 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。
请帮我解决它。
【问题讨论】:
我尝试使用此链接,但对我没有帮助。请帮我理解这个问题***.com/questions/29951663/… 这正是因为您使用的:Ubuntu version linux-headers-4.2.0-27-generic was used.
您想使用不同的树 - 包含源的树。应该是linux-4.2.0-27
【参考方案1】:
这可能是使用$(PWD)
时的语法错误。考虑改变这个:
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
到这里:
all:
$(MAKE) -C $(KDIR) M=$(shell pwd) modules
这解决了我的问题。
【讨论】:
+1 但要注意:我只需要将 $(PWD) 更改为 $(shell pwd),而不是将整个代码块(4 行)更改为 2 行。 谢谢。这解决了我遇到的同样问题。【参考方案2】:短版:
这不是您正在构建的完整内核。也许它只是标题,或者其他不完整的东西。确保它是完整的内核源代码。
加长版:
不确定 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 文件,则构建会像您一样失败。所以这是我到目前为止的替代方案,例如。对于内核 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
但最后一种方法是用于与正在运行的内核不匹配的内核......我不知道这是否适合你(它不适合我,构建一个树外模块,所以我也make bindeb-pkg
和 dpkg -i ../linux-...
是否安装了结果)
除了使用apt-get source ...
,对于 ubuntu 源,您可以从 kernel.org 或通过 git 以 tgz 文件的形式获取 vanilla 源。
【讨论】:
【参考方案3】:我在尝试为 ARM Raspberry Pi 构建 mt7610u WIFI 驱动程序时收到了类似的消息。阅读 README.md 并按照文件开头的说明进行操作。请注意,它确实需要大约 900Mb 的可用空间,因为它会下载 linux 内核源代码然后构建它。
#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]
【讨论】:
以上是关于没有规则来制作目标“arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h”需要的目标“arch/x86/entry/sys的主要内容,如果未能解决你的问题,请参考以下文章
*** 没有规则来制作目标 `src/main/jni/Build.config'。停止