使用 gcc 编译时出错

使用 gcc 编译时出错

我在服务器上使用 ubuntu18.04。我已经在根目录下安装了 gcc-4.9,但现在我想在自己的目录下安装 gcc-7.4,所以我做了以下事情。首先我下载了gcc-7.4.0.tar.gz​​,并解压它。cd gcc-7.4.0/然后使用命令下载先决条件./contrib/download_prerequisites,然后我运行

mkdir build

cd build

我想在我的目录下以非 root 身份安装 gcc-7.4,因此我指定prefix=/home/myusername/bin/进行编译。完整命令如下。

../configure --prefix=/home/xxx/bin --enable-shared --enable-threads=posix --enable-languages=c,c++,fortran --disable-multilib

但后来我收到一个错误。因此我查看了文件config.log,其中显示:

Thread model: posix
gcc version 4.9.3 (Ubuntu 4.9.3-13ubuntu2) 
configure:4314: $? = 0
configure:4303: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:4314: $? = 4
configure:4303: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.
configure:4314: $? = 4
configure:4334: checking for C compiler default output file name
configure:4356: gcc    conftest.c  >&5
gcc: error trying to exec 'cc1': execvp: No such file or directory
configure:4360: $? = 1
configure:4397: result: 
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }
configure:4403: error: in `/home/zxw/gcc-7.4.0/build':
configure:4407: error: C compiler cannot create executables
See `config.log' for more details.

它说C compiler cannot create executables,还有trying to exec 'cc1': execvp: No such file or directory。我搜索了这两个问题,并参考了这个,但这没有帮助。

我是新手,不知道到底发生了什么。有人能帮助我吗?如果您需要更多信息,请告诉我,我不知道该怎么做才能进一步检查。

更新:
1.我无法在系统范围内安装这两个版本,因为我正在实验室的服务器上准备一个环境,而我没有root访问权限。所以这就是为什么我试图在我的目录下安装我需要的特定gcc版本。2
.我需要gcc-7.4.0的原因是因为我正在为项目准备一个环境detectron2,这是Facebook提供的一个项目,用于学习物体检测。从的安装要求来看detectron2,我需要准备cudagcc首先,我现在有cuda-10.1,,ubuntu-18.04所以我搜索了我需要哪个版本的gcc,从nvidia官方网站上看,匹配的gcc版本cuda-10.1ubuntu-18.04且只有gcc-7.4,所以我正在安装这个特定版本的gcc。3.
抱歉,我不知道如何gcc-4.9安装,原因和第1点一样,我只是我实验室服务器的用户,自从我加入实验室以来它就已经在这里了。

第二次更新。我关注了并再次尝试,我使用的命令如下。

tar xzf gcc-7.4.0.tar.gz
cd gcc-7.4.0
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
/home/xxx/gcc-7.4.0/configure --prefix=/home/xxx/GCC-7.4.0

然后收到相同的错误报告。
我怀疑现有的 gcc 版本有问题,所以我无法基于以前的 gcc 构建新版本。

答案1

我立即注意到了这一点:

Thread model: posix
gcc version 4.9.3 (Ubuntu 4.9.3-13ubuntu2) 

它似乎试图使用您安装的旧版 gcc 4.9 来构建 7.4。我仔细查看了一下,没有发现哪些旧版 gcc 能够构建新版,但如果 7.4 使用了 4.9 不支持的功能,我也不会感到惊讶。

是否有特殊原因需要使用 4.9.3 来构建 7.4.0?如果没有,我建议安装 Ubuntu 的预构建版本 gcc ( sudo apt install gcc-7),它看起来将在 Ubuntu 18.04 上提供 7.5.0,然后使用它。

答案2

编辑

  1. gcc-7.4.0您可以尝试仅为您的用户安装预编译的12,可能有所不同。

建议和其他说明:

  1. 在系统范围内安装两个版本。然后使用update-alternatives选择要使用的默认版本。实际上,这通常在安装过程中自动完成,您可以稍后通过 更改您的选择update-alternatives,请参阅
    您还可以为每个用户选择使用哪个版本,例如这里。这比您要做的简单得多,并且它将使所有用户都可以使用这两个版本。

  2. 如果你有任何理由仍然喜欢你的方法(如果你说明你的理由会很有帮助,其他人也可能会提供进一步的见解),我建议你遵循(带有合适的版本号)。看来您跳过/更改了其中的一部分。例如,典型的位置是--prefix=/home/xxx/gcc-<version>,而不是--prefix=/home/xxx/bin。无论这是否是问题的原因,我建议您从列出的命令开始,如果它有效,则开始configure根据需要添加标志。

  3. 您可能会考虑安装预编译的软件包以满足先决条件,而不是./contrib/download_prerequisites如上所述这里

  4. 请发布您用于“已在根目录下安装 gcc-4.9”的确切命令(请花 30 秒来完成此操作)。“在根目录下”安装不是您通常想要做的事情。

  5. 我会先听取建议,而不是尝试调试为什么会出现错误。只是提供一些提示可能的原因(不再深入探讨):

    5.1. 对于gcc: error: unrecognized command line option '-V'12

    5.2. 对于gcc: error: unrecognized command line option '-qversion':请参见上文。

    5.3. 对于gcc: error trying to exec 'cc1': execvp: No such file or directory1

    5.4. 对于configure:4407: error: C compiler cannot create executables1作为示例。您的configure选项之一可能是罪魁祸首。按照第 2 项所示开始。

相关内容