我在服务器上使用 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
,我需要准备cuda
和gcc
首先,我现在有cuda-10.1
,,ubuntu-18.04
所以我搜索了我需要哪个版本的gcc,从nvidia官方网站上看,匹配的gcc版本cuda-10.1
是ubuntu-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
编辑。
建议和其他说明:
在系统范围内安装两个版本。然后使用
update-alternatives
选择要使用的默认版本。实际上,这通常在安装过程中自动完成,您可以稍后通过 更改您的选择update-alternatives
,请参阅这。
您还可以为每个用户选择使用哪个版本,例如这里。这比您要做的简单得多,并且它将使所有用户都可以使用这两个版本。如果你有任何理由仍然喜欢你的方法(如果你说明你的理由会很有帮助,其他人也可能会提供进一步的见解),我建议你遵循这(带有合适的版本号)。看来您跳过/更改了其中的一部分。例如,典型的位置是
--prefix=/home/xxx/gcc-<version>
,而不是--prefix=/home/xxx/bin
。无论这是否是问题的原因,我建议您从列出的命令开始,如果它有效,则开始configure
根据需要添加标志。您可能会考虑安装预编译的软件包以满足先决条件,而不是
./contrib/download_prerequisites
如上所述这里。请发布您用于“已在根目录下安装 gcc-4.9”的确切命令(请花 30 秒来完成此操作)。“在根目录下”安装不是您通常想要做的事情。
我会先听取建议,而不是尝试调试为什么会出现错误。只是提供一些提示可能的原因(不再深入探讨):
5.1. 对于
gcc: error: unrecognized command line option '-V'
:1,2。5.2. 对于
gcc: error: unrecognized command line option '-qversion'
:请参见上文。5.3. 对于
gcc: error trying to exec 'cc1': execvp: No such file or directory
:1。5.4. 对于
configure:4407: error: C compiler cannot create executables
:1作为示例。您的configure
选项之一可能是罪魁祸首。按照第 2 项所示开始。