【问题标题】:gcc cannot find stddef.h after gcc upgradegcc 升级后 gcc 找不到 stddef.h
【发布时间】:2018-03-16 13:33:39
【问题描述】:

我正在使用 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...它不应该从我的 ~/bin/sourceInstallations 目录调用 stdio.h 吗?

在这一点上,我不知道如何解决这个问题,我也不太明白到底是什么问题。这个单独的 gcc 安装是否刚刚完成?我不应该期望它起作用吗?

话虽如此,原来的 gcc 仍然有效。如果我这样编译我的程序

$ sudo gcc -o dummy dummy.c

它编译得很好。我需要更新版本的 gcc 来编译别人的软件……也许我应该不用。非常感谢任何帮助。

【问题讨论】:

  • 如果您真的按照这些说明进行操作,那么您的新 gcc 位于 /usr/local/bin/gcc,而不是 ~/bin/sourceInstallation。您是否尝试从构建目录运行已卸载的 gcc?
  • 你是对的。 $ 哪个 gcc 告诉我 /usr/local/bin/gcc
  • 那么,如果您撤消对PATHGCC_EXEC_PREFIX 的修改并使用gcc,会发生什么?
  • 这让我回到了 cc1 错误:gcc: error trying to exec 'cc1': execvp: No such file or directory

标签: c gcc


【解决方案1】:

嗯,其实我几天前也遇到了同样的问题。我使用 VS Code,当我尝试使用 GCC 编译我的代码时,我的包含下出现了一条绿线。我所做的是我卸载了 GCC,然后从安装管理器中只重新安装了 c 和 c++ 包并且它工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 2018-09-23
    • 1970-01-01
    • 2018-04-10
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多