没有规则来制作目标“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-pkgdpkg -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'。停止

gcc makefile错误:“没有规则来制作目标......”

Makefile:没有规则来制作目标。停止

linux C++ gmake“没有规则来制作目标”

驱动程序未编译“没有规则来制作目标”

Makefiles 链是一团糟:没有规则来制作目标