Рейтинг:0

ошибки при компиляции с помощью gcc

флаг cn

Я использую ubuntu18.04 на сервере. Я уже установил gcc-4.9 под корнем, но теперь я хочу установить gcc-7.4 в свой собственный каталог, поэтому я сделал следующее. Сначала я скачал gcc-7.4.0.tar.gz, и извлек его. Затем компакт-диск gcc-7.4.0/ а затем загрузите необходимые компоненты с помощью команды ./contrib/download_prerequisites, тогда я бегу

сборка mkdir

и

сборка компакт-диска

Я хочу установить gcc-7.4 в свой каталог без рута, поэтому я назначил префикс =/дом/имя_пользователя/бен/ Скомпилировать. Полная команда выглядит следующим образом.

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

но потом я получил ошибку. Поэтому я заглянул в config.log файл, в котором говорится:

Модель потока: posix
gcc версии 4.9.3 (Ubuntu 4.9.3-13ubuntu2) 
настроить:4314: $? = 0
настройка: 4303: gcc -V >&5
gcc: ошибка: нераспознанный параметр командной строки '-V'
gcc: фатальная ошибка: нет входных файлов
компиляция прекращена.
настроить:4314: $? = 4
настройка: 4303: gcc -qверсия >&5
gcc: ошибка: нераспознанный параметр командной строки '-qversion'
gcc: фатальная ошибка: нет входных файлов
компиляция прекращена.
настроить:4314: $? = 4
configure: 4334: проверка имени выходного файла компилятора C по умолчанию
настроить: 4356: gcc conftest.c >&5
gcc: ошибка при попытке выполнить «cc1»: execvp: нет такого файла или каталога
настроить: 4360: $? = 1
настроить: 4397: результат: 
настроить: сбойная программа была:
| /* confdefs.h */
| #define ПАКЕТ_ИМЯ ""
| #define ПАКЕТ_TARNAME ""
| #define ПАКЕТ_ВЕРСИЯ ""
| #define ПАКЕТ_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define ПАКЕТ_URL ""
| /* конец confdefs.h. */
| 
| инт
| главный ()
| {
| 
| ;
| вернуть 0;
| }
настроить: 4403: ошибка: в `/home/zxw/gcc-7.4.0/build':
configure: 4407: ошибка: компилятор C не может создавать исполняемые файлы
Смотрите `config.log' для более подробной информации.

это говорит Компилятор C не может создавать исполняемые файлы,а также попытка выполнить «cc1»: execvp: нет такого файла или каталога. Я искал оба вопроса и ссылался на Вот этот, но это не помогает.

Я новичок в этом и не знаю точно, что происходит. Кто-нибудь может мне помочь? Если вам нужна дополнительная информация, скажите, пожалуйста, я не знаю, что я могу сделать, чтобы проверить ее дальше.

Обновить:
1. Я не могу установить обе версии для всей системы, потому что я готовлю среду на сервере своей лаборатории, к которому у меня нет root-доступа. Вот почему я попытался установить нужную мне версию gcc в свой каталог.
2. Причина, по которой мне нужен gcc-7.4.0, заключается в том, что я готовлю среду для Детектор2 project, который предоставляется Facebook и используется для обучения обнаружению объектов. И из требований к установке Детектор2, мне нужно подготовить куда и gcc во-первых, у меня сейчас куда-10.1,Убунту-18.04 , поэтому я искал, какая версия gcc мне нужна, и на официальном сайте nvidia он говорит, что версия gcc соответствует куда-10.1 и Убунту-18.04 есть и только есть gcc-7.4, поэтому я устанавливаю именно эту версию gcc.
3. Извините, я не знаю, как gcc-4.9 установлен, причина та же, что и в пункте 1, я просто пользователь сервера своей лабы, он уже был здесь с тех пор, как я присоединился к лабе.

второе обновление. Я последовал за это и попробовал еще раз, команда, которую я использовал, приведена ниже.

смола xzf gcc-7.4.0.tar.gz
компакт-диск gcc-7.4.0
./contrib/download_prerequisites
CD ..
mkdir objdir
компакт-диск objdir
/home/xxx/gcc-7.4.0/configure --prefix=/home/xxx/GCC-7.4.0

а затем получил тот же отчет об ошибке.
Я сомневаюсь, что с существующей версией gcc что-то не так, поэтому я не могу создать новую версию на основе предыдущей версии gcc.

флаг hr
Ошибка предполагает наличие проблемы с вашей текущей (gcc-4.9?) установкой - действительно ли существует исполняемый файл `cc1`, где `gcc` может его найти? У меня есть `gcc-4.8` в моей системе 18.04 и, например, `/usr/lib/gcc/x86_64-linux-gnu/4.8/cc1`.
sancho.s ReinstateMonicaCellio avatar
флаг pl
Как показано в одной из ссылок, опубликованных в моем ответе (см. [это] (https://askubuntu.com/a/647593/226614)), в `gcc-4.9` могут отсутствовать некоторые дополнения... (libc6, основы сборки и т. д.)
флаг hr
FWIW Я следовал вашему второму методу на моем компьютере 18.04 с gcc-4.8 (в частности, 4.8.5-4ubuntu8 из репозитория bionic/universe), и он был настроен нормально и (в конечном итоге) успешно собран. Я не думаю, что проблема в том, что gcc-4.9 "слишком стар" для его сборки.
Рейтинг:0
флаг pl

РЕДАКТИРОВАТЬ.

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

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

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

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

  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 Например. Один из ваших настроить options, скорее всего, виноват. Начните, как указано в пункте 2.

Kyrie Erving avatar
флаг cn
Большое спасибо. Я обновил некоторую информацию, которую вы упомянули, и я пытаюсь выполнить те шаги, которые вы упомянули, я обновлю снова после того, как закончу их.
флаг hr
«5.1» и «5.2» выглядят совершенно нормально для меня — скрипт «./configure» пробует множество параметров, чтобы определить, как выглядит среда сборки.
sancho.s ReinstateMonicaCellio avatar
флаг pl
@steeldriver - Согласен.
Рейтинг:0
флаг ph

Я сразу заметил это:

Модель потока: posix
gcc версии 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 установить gcc-7), который, похоже, предоставит 7.5.0 на Ubuntu 18.04 и использует его вместо этого.

Kyrie Erving avatar
флаг cn
Большое спасибо, причина, по которой мне нужно использовать «gcc-7.4», заключается в том, что на веб-сайте nvidia указано, что единственная версия gcc, которая соответствует «cuda-10.1» и «ubuntu 18.04», — это «gcc-7.4», поэтому я просто попробовал установить конкретную версию 7.4 вместо использования предварительно собранной версии gcc, которая может предоставить мне версию 7.5.
Knud Larsen avatar
флаг by
gcc-7.5 - это версия "7.4" с исправлением ошибок. .... Вы уверены, что gcc-7.5 не работает с CUDA? ..... Сборка gcc-7.4 : Требуется системный компилятор g++-7.5 / gcc-7.5.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.