make[1]: *** 没有规则可以创建“arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h”需要的目标“/usr/src/lin

本文详细描述了在使用make指令编译Linux内核驱动代码时遇到的错误,以及通过修正指令中M参数的空格问题成功解决问题的过程。同时提醒读者在进行交叉编译时,需要注意Makefile中ARCH和CROSS_COMPILE参数的正确书写,避免因空格导致的编译失败。

最近一直在研究Linux的内核驱动,昨天用如下指令编译驱动代码

make -C /usr/src/linux-headers-3.11.0-15-generic M= ~/android/workspace/drivers

结果出现了如下错误:

make[1]: 没有规则可以创建“arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h”需要的目标“/usr/src/linux-headers-3.11.0-15-generic/arch/x86/syscalls/syscall_32.tbl”。 停止。
make: [archheaders] 错误 2

提示说是缺少/usr/src/linux-headers-3.11.0-15-generic/arch/x86/syscalls/syscall_32.tbl文件,但是我在网上搜索了内核文件列表,并没有这个文件,于是花了我整整一天的时间来解决这个问题。。。

后来终于发现,原来是指令错了。。。正确格式如下:

make -C /usr/src/linux-headers-3.11.0-15-generic M=~/android/workspace/drivers

一定要注意,M=/XX/XX 这里不能有空格!!!
一个空格花了我整整一天时间啊!


记得之前在做交叉编译的时候,需要修改Makefile的以下内容:

ARCH ?= arm #platform
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

同样要注意! 这里arm后面不能有空格!
当时也是多了一个空格,死活编译失败。后来搜到了一位大侠的博客,说花了两个小时结果就是一个空格。。。。 悲剧
所以,也以此分享给大家,希望大家遇到这个问题能够迅速解决,不要再次花费太多不必要的时间。

scripts/kconfig/conf --syncconfig Kconfig SYSTBL arch/x86/include/generated/asm/syscalls_32.h SYSHDR arch/x86/include/generated/asm/unistd_32_ia32.h SYSHDR arch/x86/include/generated/asm/unistd_64_x32.h SYSTBL arch/x86/include/generated/asm/syscalls_64.h SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h UPD include/config/kernel.release WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h WRAP arch/x86/include/generated/uapi/asm/poll.h UPD include/generated/uapi/linux/version.h UPD include/generated/utsrelease.h DESCEND objtool HOSTCC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/fixdep.o HOSTLD /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/fixdep-in.o LINK /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/fixdep CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/builtin-check.o GEN /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/arch/x86/lib/inat-tables.c CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/arch/x86/decode.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/builtin-orc.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/exec-cmd.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/check.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/orc_gen.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/help.o In file included from help.c:12: In function ‘xrealloc’, inlined from ‘add_cmdname’ at help.c:24:2: subcmd-util.h:56:23: error: pointer may be used after ‘realloc’ [-Werror=use-after-free] 56 | ret = realloc(ptr, size); | ^~~~~~~~~~~~~~~~~~ subcmd-util.h:52:21: note: call to ‘realloc’ here 52 | void *ret = realloc(ptr, size); | ^~~~~~~~~~~~~~~~~~ subcmd-util.h:58:31: error: pointer may be used after ‘realloc’ [-Werror=use-after-free] 58 | ret = realloc(ptr, 1); | ^~~~~~~~~~~~~~~ subcmd-util.h:52:21: note: call to ‘realloc’ here 52 | void *ret = realloc(ptr, size); | ^~~~~~~~~~~~~~~~~~ CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/orc_dump.o LD /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/arch/x86/objtool-in.o cc1: all warnings being treated as errors mv: 对 '/home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/.help.o.tmp' 调用 stat 失败: 没有那个文件或目录 make[4]: *** [/home/mouse/workspace/kernel/linux-4.19.3/tools/build/Makefile.build:97:/home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/help.o] 错误 1 make[3]: *** [Makefile:52:/home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/libsubcmd-in.o] 错误 2 make[2]: *** [Makefile:54:/home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/libsubcmd.a] 错误 2 make[2]: *** 正在等待未完成的任务.... CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/elf.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/special.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/objtool.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/libstring.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/str_error_r.o HOSTCC arch/x86/tools/relocs_32.o WRAP arch/x86/include/generated/asm/dma-contiguous.h WRAP arch/x86/include/generated/asm/early_ioremap.h WRAP arch/x86/include/generated/asm/export.h WRAP arch/x86/include/generated/asm/mcs_spinlock.h WRAP arch/x86/include/generated/asm/mm-arch-hooks.h LD /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/objtool-in.o make[1]: *** [Makefile:63:objtool] 错误 2 make: *** [Makefile:1644:tools/objtool] 错误 2 make: *** 正在等待未完成的任务.... HOSTCC arch/x86/tools/relocs_64.o HOSTCC arch/x86/tools/relocs_common.o HOSTLD arch/x86/tools/relocs
最新发布
08-06
mouse@mouse-virtual-machine:~/workspace/kernel/linux-4.19.3$ make -j8 scripts/kconfig/conf --syncconfig Kconfig SYSTBL arch/x86/include/generated/asm/syscalls_32.h SYSHDR arch/x86/include/generated/asm/unistd_32_ia32.h SYSTBL arch/x86/include/generated/asm/syscalls_64.h SYSHDR arch/x86/include/generated/asm/unistd_64_x32.h SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h UPD include/config/kernel.release WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h WRAP arch/x86/include/generated/uapi/asm/poll.h UPD include/generated/uapi/linux/version.h UPD include/generated/utsrelease.h DESCEND objtool HOSTCC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/fixdep.o HOSTLD /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/fixdep-in.o LINK /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/fixdep CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/builtin-check.o GEN /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/arch/x86/lib/inat-tables.c CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/arch/x86/decode.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/exec-cmd.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/builtin-orc.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/help.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/pager.o In file included from help.c:12: In function ‘xrealloc’, inlined from ‘add_cmdname’ at help.c:24:2: subcmd-util.h:56:23: error: pointer may be used after ‘realloc’ [-Werror=use-after-free] 56 | ret = realloc(ptr, size); | ^~~~~~~~~~~~~~~~~~ subcmd-util.h:52:21: note: call to ‘realloc’ here 52 | void *ret = realloc(ptr, size); | ^~~~~~~~~~~~~~~~~~ subcmd-util.h:58:31: error: pointer may be used after ‘realloc’ [-Werror=use-after-free] 58 | ret = realloc(ptr, 1); | ^~~~~~~~~~~~~~~ subcmd-util.h:52:21: note: call to ‘realloc’ here 52 | void *ret = realloc(ptr, size); | ^~~~~~~~~~~~~~~~~~ CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/check.o cc1: all warnings being treated as errors mv: 对 ‘/home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/.help.o.tmp’ 调用 stat 失败: 没有那个文件或目录 make[4]: *** [/home/mouse/workspace/kernel/linux-4.19.3/tools/build/Makefile.build:96:/home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/help.o] 错误 1 make[3]: *** [Makefile:52:/home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/libsubcmd-in.o] 错误 2 make[2]: *** [Makefile:54:/home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/libsubcmd.a] 错误 2 make[2]: *** 正在等待未完成的任务… CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/orc_gen.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/orc_dump.o LD /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/arch/x86/objtool-in.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/elf.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/special.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/objtool.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/libstring.o CC /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/str_error_r.o HOSTCC arch/x86/tools/relocs_32.o HOSTCC arch/x86/tools/relocs_64.o WRAP arch/x86/include/generated/asm/dma-contiguous.h HOSTCC arch/x86/tools/relocs_common.o WRAP arch/x86/include/generated/asm/early_ioremap.h WRAP arch/x86/include/generated/asm/export.h WRAP arch/x86/include/generated/asm/mcs_spinlock.h WRAP arch/x86/include/generated/asm/mm-arch-hooks.h CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig HOSTLD arch/x86/tools/relocs CC scripts/mod/devicetable-offsets.s LD /home/mouse/workspace/kernel/linux-4.19.3/tools/objtool/objtool-in.o make[1]: *** [Makefile:63:objtool] 错误 2 make: *** [Makefile:1644:tools/objtool] 错误 2 make: *** 正在等待未完成的任务… MKELF scripts/mod/elfconfig.h HOSTCC scripts/kallsyms HOSTCC scripts/selinux/genheaders/genheaders In file included from scripts/selinux/genheaders/genheaders.c:19: ./security/selinux/include/classmap.h:249:2: error: #error New address family defined, please update secclass_map. 249 | #error New address family defined, please update secclass_map. | ^~~~~ HOSTCC scripts/selinux/mdp/mdp make[3]: *** [scripts/Makefile.host:90:scripts/selinux/genheaders/genheaders] 错误 1 make[2]: *** [scripts/Makefile.build:546:scripts/selinux/genheaders] 错误 2 make[2]: *** 正在等待未完成的任务… HOSTCC scripts/mod/modpost.o HOSTCC scripts/pnmtologo In file included from scripts/selinux/mdp/mdp.c:49: ./security/selinux/include/classmap.h:249:2: error: #error New address family defined, please update secclass_map. 249 | #error New address family defined, please update secclass_map. | ^~~~~ make[3]: *** [scripts/Makefile.host:90:scripts/selinux/mdp/mdp] 错误 1 make[2]: *** [scripts/Makefile.build:546:scripts/selinux/mdp] 错误 2 make[1]: *** [scripts/Makefile.build:546:scripts/selinux] 错误 2 make[1]: *** 正在等待未完成的任务… UPD scripts/mod/devicetable-offsets.h HOSTCC scripts/mod/sumversion.o HOSTCC scripts/mod/file2alias.o HOSTLD scripts/mod/modpost make: *** [Makefile:1067:scripts] 错误 2
08-06
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值