【发布时间】: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
-
那么,如果您撤消对
PATH和GCC_EXEC_PREFIX的修改并使用gcc,会发生什么? -
这让我回到了 cc1 错误:gcc: error trying to exec 'cc1': execvp: No such file or directory