ошибки при компиляции с помощью 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

Я хочу установить 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.

0
задан 6 June 2021 в 10:45

2 ответа

ИЗМЕНИТЬ .

  1. Вы можете попробовать установить предварительно скомпилированный gcc-7.4.0 только для своего пользователя, 1 , 2 , YMMV.

Рекомендации и другие примечания:

  1. Установите обе версии в масштабе всей системы. Затем используйте update-alternatives , чтобы выбрать, какая версия будет использоваться по умолчанию. На самом деле, это часто делается автоматически в процессе установки, и позже вы можете изменить свой выбор с помощью update-alternatives , см. this .
    { {1}} И вы также можете выбрать, какую версию использовать для каждого пользователя, например здесь . Это намного проще, чем то, что вы пытаетесь сделать, и сделает обе версии доступными. для всех пользователей.

  2. Если у вас есть какие-либо причины для того, чтобы по-прежнему предпочитать ваш метод (было бы полезно, если бы вы указали свою причину / ы, другие могут также предоставить дополнительную информацию), я предлагаю вам следовать this (с подходящим номером версии ). Похоже, вы пропустили / изменили его часть. Например, типичное местоположение - - prefix = / home / xxx / gcc- , а не - prefix = / home / xxx / bin . Независимо от того, является ли это причиной проблем, я предлагаю вам начать с перечисленных команд, и если это сработает, начните добавлять флаги configure по желанию.

  3. Вы можете рассмотреть возможность установки предварительно скомпилированных пакетов для предварительных требований вместо ./ contrib / download_prerequisites , как описано здесь .

  4. Опубликуйте точную команду, которую вы использовали для «уже установленного gcc-4.9 под корнем» (пожалуйста, потратьте на это 30 секунд). Установка «под корень» - это не то, что вы обычно хотели бы делать.

  5. Сначала я бы предложил предложения, вместо того чтобы пытаться отладить, почему у вас возникли ошибки, которые вы получили. Просто чтобы указать несколько возможных причин (не буду углубляться в подробности это):

    5.1. Для gcc: ошибка: нераспознанный параметр командной строки '-V' : 1 , 2 .

    5.2. Для gcc: ошибка: нераспознанный параметр командной строки '-qversion' : см. Выше.

    5.3. Для gcc: ошибка при попытке выполнить 'cc1': execvp: Нет такого файла или каталога : 1 .

    5.4.Для configure: 4407: ошибка: компилятор C не может создавать исполняемые файлы : 1 в качестве примера. Вероятно, виноват один из ваших параметров configure . Начните, как указано в пункте 2.

0
ответ дан 28 July 2021 в 11:32

Я сразу заметил следующее:

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, и использовать ее вместо этого.

0
ответ дан 28 July 2021 в 11:32

Другие вопросы по тегам:

Похожие вопросы: