Я использую 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
Я хочу установить gcc-7.4 в свой каталог без root, поэтому я назначил 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 не может создавать исполняемые файлы
, а также ] пытается выполнить 'cc1': execvp: Нет такого файла или каталога
. Я просмотрел обе проблемы и обратился к этой , но это не помогло.
Я новичок в этом и не знаю точно, что происходит.Кто-нибудь может мне помочь? Если вам нужна дополнительная информация, скажите, пожалуйста, я не знаю, что я могу сделать, чтобы проверить это дальше.
обновление:
1. Я не могу установить обе версии в масштабе всей системы, потому что я готовлю среду на сервере моей лаборатории, к которой у меня нет корневого доступа. Вот почему я попытался установить нужную мне версию 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.
ИЗМЕНИТЬ .
gcc-7.4.0
только для своего пользователя, 1 , 2 , YMMV. Рекомендации и другие примечания:
Установите обе версии в масштабе всей системы. Затем используйте update-alternatives
, чтобы выбрать, какая версия будет использоваться по умолчанию. На самом деле, это часто делается автоматически в процессе установки, и позже вы можете изменить свой выбор с помощью update-alternatives
, см. this .
{ {1}} И вы также можете выбрать, какую версию использовать для каждого пользователя, например здесь .
Это намного проще, чем то, что вы пытаетесь сделать, и сделает обе версии доступными. для всех пользователей.
Если у вас есть какие-либо причины для того, чтобы по-прежнему предпочитать ваш метод (было бы полезно, если бы вы указали свою причину / ы, другие могут также предоставить дополнительную информацию), я предлагаю вам следовать this (с подходящим номером версии ). Похоже, вы пропустили / изменили его часть.
Например, типичное местоположение - - prefix = / home / xxx / gcc-
, а не - prefix = / home / xxx / bin
. Независимо от того, является ли это причиной проблем, я предлагаю вам начать с перечисленных команд, и если это сработает, начните добавлять флаги configure
по желанию.
Вы можете рассмотреть возможность установки предварительно скомпилированных пакетов для предварительных требований вместо ./ contrib / download_prerequisites
, как описано здесь .
Опубликуйте точную команду, которую вы использовали для «уже установленного gcc-4.9 под корнем» (пожалуйста, потратьте на это 30 секунд). Установка «под корень» - это не то, что вы обычно хотели бы делать.
Сначала я бы предложил предложения, вместо того чтобы пытаться отладить, почему у вас возникли ошибки, которые вы получили. Просто чтобы указать несколько возможных причин (не буду углубляться в подробности это):
5.1. Для gcc: ошибка: нераспознанный параметр командной строки '-V'
: 1 , 2 .
5.2. Для gcc: ошибка: нераспознанный параметр командной строки '-qversion'
: см. Выше.
5.3. Для gcc: ошибка при попытке выполнить 'cc1': execvp: Нет такого файла или каталога
: 1 .
5.4.Для configure: 4407: ошибка: компилятор C не может создавать исполняемые файлы
: 1 в качестве примера. Вероятно, виноват один из ваших параметров configure
. Начните, как указано в пункте 2.
Я сразу заметил следующее:
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? Если нет, я бы предложил установить предварительно собранную версию gcc для Ubuntu ( sudo apt install gcc-7
), которая, похоже, предоставит 7.5.0 в Ubuntu 18.04, и использовать ее вместо этого.