gcc升级后,gcc无法找到stddef.h

时间:2018-03-16 13:33:39

标签: c gcc

我正在使用RHEL7并想要更新的gcc编译器。按照here发布的说明,我在〜/ bin / sourceInstallation

下安装了gcc 7.3.0

检查我的版本:

$ gcc --version
gcc (GCC) 7.3.0

$ sudo gcc --version
gcc (GCC) 4.8.5

到目前为止很棒。但是,在尝试安装PyHDF时,我收到一条错误消息,指出无法找到cc1。

$ python setup.py install
angry text angry text angry text 
cannot find cc1

显然GCC_EXEC_PREFIX没有正确设置(不知道这意味着什么),但我通过更新.bashrc中的路径来解决它

# add non-standard gcc compiler path
export PATH=$PATH:~/bin/sourceInstallations/gcc_7_3_0_release_build/gcc/
export GCC_EXEC_PREFIX=~/bin/sourceInstallations/gcc_7_3_0_release_build/gcc/

这个修正是否正确?

现在编译一个简单的程序时我得到一个关于stdio.h的错误,找不到stddef.h

$ gcc -o dummy dummy.c
In file included from dummy.c:1:0:
/usr/include/stdio.h:33:11: fatal error: stddef.h: No such file or directory
# include <stddef.h>
       ^~~~~~~~~~
$ compilation terminated.

我知道stddef.h存在于路径中,因为它是在明确添加到路径的目录下找到的并且GCC_EXEC_PREFIX

$ locate stddef.h
~/bin/sourceInstallations/gcc_7_3_0_release_build/gcc/include/stddef.h

gcc是否从错误的位置调用stdio.h。从错误消息:/usr/include/stdio.h:33:11...shouldn&#39;它是从我的〜/ bin / sourceInstallations目录调用stdio.h吗?

此时我对如何解决这个问题一无所知,而且我并不能确切地理解问题所在。这个单独的gcc安装是否刚刚被冲洗?我不应该期望它能起作用吗?

所有这一切,原来的gcc仍然有效。如果我像这样编译我的程序

$ sudo gcc -o dummy dummy.c

编译好。我需要一个更新版本的gcc来编译其他人的软件......也许我应该没有。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

好吧,几天前我实际上遇到了同样的问题。我使用VS Code,而当我尝试使用GCC编译代码时,包含在我的include下出现绿线。我要做的是卸载了GCC,然后从安装管理器中仅重新安装了c和c ++软件包,并且可以正常工作。