Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么gcc从不存在的文件夹中搜索头文件?_C_Linux_Gcc_Compiler Errors_Makefile - Fatal编程技术网

为什么gcc从不存在的文件夹中搜索头文件?

为什么gcc从不存在的文件夹中搜索头文件?,c,linux,gcc,compiler-errors,makefile,C,Linux,Gcc,Compiler Errors,Makefile,我试图在CentOS 7上构建一个开源项目,但却出现了非常奇怪的构建错误: make: *** No rule to make target `/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h', needed by `core/luv/luv.o'. make: *** No rule to make target `/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h', needed by

我试图在
CentOS 7
上构建一个开源项目,但却出现了非常奇怪的构建错误:

make: *** No rule to make target `/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed/limits.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed/syslimits.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/sys/cdefs.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/wordsize.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/gnu/stubs.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/gnu/stubs-64.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/posix1_lim.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/local_lim.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/posix2_lim.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/types.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/typesizes.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/stdio_lim.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/sys_errlist.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/bits/errno.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/include/x86_64-linux-gnu/asm/errno.h', needed by `core/luv/luv.o'.
make: *** No rule to make target `/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdint.h', needed by `core/luv/luv.o'.
执行“
gcc-E-v-
”命令后,输出:

[root@centos shark]# gcc -E -v -
Using built-in specs.
COLLECT_GCC=gcc
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.3-20140911/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.3-20140911/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)
COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'
 /usr/libexec/gcc/x86_64-redhat-linux/4.8.3/cc1 -E -quiet -v - -mtune=generic -march=x86-64
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../x86_64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include
 /usr/local/include
 /usr/include
End of search list.
我不知道
/usr/lib/gcc/x86_64-linux-gnu/4.8
/usr/include/x86_64-linux-gnu
是如何产生的。有人能提供一些线索吗

我不知道
/usr/lib/gcc/x86_64-linux-gnu/4.8
/usr/include/x86_64-linux-gnu
是如何产生的

这些头文件随gcc一起安装。它们是操作系统头文件的副本,经过修补,可以使用gcc干净地编译。某些本机OS头文件(例如,在Solaris、BSD上)无法使用gcc干净地编译


/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h',
core/luv/luv.o'
所需

上面说,
luv.o
是在出现
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h
时构建的。可能是您在另一台机器上构建了
.o
文件。删除所有
.o
.d
文件,或尝试
清除

我不知道
/usr/lib/gcc/x86_64-linux-gnu/4.8
/usr/include/x86_64-linux-gnu
是如何产生的

这些头文件随gcc一起安装。它们是操作系统头文件的副本,经过修补,可以使用gcc干净地编译。某些本机OS头文件(例如,在Solaris、BSD上)无法使用gcc干净地编译


/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h',
core/luv/luv.o'
所需


上面说,
luv.o
是在出现
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h
时构建的。可能是您在另一台机器上构建了
.o
文件。删除所有
.o
.d
文件,或尝试
清除

作者已将特定于其系统的文件上载到源存储库(请参阅)

解决方案是通过执行一个简单的
grep
,找到有问题的文件:

grep -R /usr/lib/gcc ./*
结果是(从一个干净的
git克隆


删除有问题的
.d
文件(
/bpf/libbpf/bpf\u load.d
/bpf/libbpf/libbpf.d
,以及
/core/luv/luv.d
)对我来说很有效。

作者已将其系统特定的文件上载到源代码库(请参阅)

解决方案是通过执行一个简单的
grep
,找到有问题的文件:

grep -R /usr/lib/gcc ./*
结果是(从一个干净的
git克隆



删除有问题的
.d
文件(
/bpf/libbpf/bpf\u load.d
/bpf/libbpf/libbpf.d
,和
/core/luv/luv.d
)对我来说很有效。

这是一个make错误,而不是gcc错误,gcc的include路径是无关的。@user657267:那么我可以简单地调试它并找到根本原因吗?makefile很漂亮,很难说清楚,但依赖项可能会以某种方式破坏构建,从干净的源代码根目录重新开始,并从
%.o
配方中删除
-MD
(或将其更改为
-MMD
),如果您只想构建源代码,则不需要DEP。@user657267:删除
-MD
后,这些错误仍然存在。值得一提的是,我可以在Arch Linux上重现,第一个错误是:
make:**core/luv/luv.o所需的没有规则生成target'/usr/lib/gcc/x86_64-Linux-gnu/4.8/include/stdarg.h'。停止。
这是一个make错误,不是gcc错误,gcc的include路径是不相关的。@user657267:那么我可以调试它并找到根本原因吗?makefile非常简单,很难说清楚,但是依赖项可能会以某种方式破坏构建,从干净的源代码根目录重新开始,并从
%.o
配方中删除
-MD
(或将其更改为
-MMD
),如果您只想构建源代码,则不需要deps。@user657267:删除
-MD
后,错误仍然存在。值得一提的是,我可以在Arch Linux上重现,第一个错误是:
make:**“core/luv/luv.o”不需要规则来生成目标“/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h”。停止。
我的操作系统是
CentOS
。那我该怎么修呢?@NanXiao看来你的gcc安装不正确。是吗?
yum install gcc
,在安装过程中没有发现任何错误。@NanXiao或者,尝试
make clean
,依赖项文件可能已过期。@NanXiao很好,它说
.o
文件需要这些头。这意味着,
.o
文件是在存在这些头的情况下构建的。删除所有
.o
.d
文件。我的操作系统是
CentOS
。那我该怎么修呢?@NanXiao看来你的gcc安装不正确。是吗?
yum install gcc
,在安装过程中没有发现任何错误。@NanXiao或者,尝试
make clean
,依赖项文件可能已过期。@NanXiao很好,它说
.o
文件需要这些头。这意味着,
.o
文件是在存在这些头的情况下构建的。删除所有
.o
.d
文件。
./bpf/libbpf/bpf_load.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h \
./bpf/libbpf/bpf_load.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h \
./bpf/libbpf/bpf_load.d: /usr/include/elf.h /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdint.h \
./bpf/libbpf/bpf_load.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdbool.h \
./bpf/libbpf/libbpf.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h \
./bpf/libbpf/libbpf.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h \
./bpf/libbpf/libbpf.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdint.h /usr/include/stdint.h \
./bpf/bpf.lua:   local clang_cmd = string.format("clang -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/include -I%s -I%s/arch/x86/include -I%s/arch/x86/include/generated/uapi -I%s/arch/x86/include/generated  -I%s/include -I%s/arch/x86/include/uapi -I%s/arch/x86/include/generated/uapi -I%s/include/uapi -I%s/include/generated/uapi -include %s/include/linux/kconfig.h %s -D__KERNEL__ -Wno-unused-value -Wno-pointer-sign -O2 -emit-llvm -x c -c %s -o %s", bpfinc, linuxinc, linuxinc, linuxinc, linuxinc, linuxinc, linuxinc, linuxinc, linuxinc, linuxinc, bpf.cargs_extra, srcfile, objfile)
./core/luv/luv.d: core/luajit/src/lua.h /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdarg.h \
./core/luv/luv.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h \
./core/luv/luv.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed/limits.h \
./core/luv/luv.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed/syslimits.h \
./core/luv/luv.d: /usr/lib/gcc/x86_64-linux-gnu/4.8/include/stdint.h /usr/include/stdint.h \
Binary file ./perf/libtraceevent.a matches
Binary file ./perf/libapikfs.a matches
Binary file ./perf/libperf.a matches