Сборка GCC не удалась с ошибкой "make: *** No targets specified and no makefile found."

Вопрос или проблема

Я следовал инструкциям по установке GCC [1], чтобы скачать исходный код и настроить свою сборку, но когда я пытаюсь выполнить make из корневого каталога (с MAINTAINERS и Makefile.in), я всегда получаю одну и ту же ошибку: make: *** No targets specified and no makefile found. Я не знаю, как продолжить с шагом сборки в руководстве по установке.

Редактировать: Я заметил, что мой файл objdir/config.log заканчивается на configure: exit 1, и я не уверен, ожидается ли это или это указывает на то, что конфигурация не удалась и проект не находится в жизнеспособном состоянии для сборки.

Я пробовал

  • make

  • make install

  • make bootstrap

  • make -f Makefile.in

    Это завершилось ошибкой с сообщением Makefile:26: *** missing separator. Stop. из-за строк, начинающихся с @if и @endif. Этот автогенерируемый файл имеет много таких строк, я сомневаюсь, что я должен удалять их вручную.

Мой полный рабочий процесс до этого момента:

# Получите исходный код
~$ mkdir gcc; cd gcc
~/gcc$ git clone git://gcc.gnu.org/git/gcc.git .

# Создайте objdir/ и настройте необходимую сборку
~$ mkdir ARM; cd ARM
~/gcc/ARM$ ../configure --prefix=$HOME --target=aarch64-none-elf

# Попробуйте "просто сделать"
~/gcc/ARM$ cd ..
~/gcc$ make # :(

Некоторые, возможно, релевантные детали

~/gcc$ gcc --version
gcc (GCC) 11.4.1 20231218 (Red Hat 11.4.1-3)
Copyright (C) 2021 Free Software Foundation, Inc.
Это свободное программное обеспечение; смотрите исходный код для условий копирования.  Нет
гарантии; даже не для ТОРГОВЫХ КАЧЕСТВ или ПОДХОДЯЩЕСТВА ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.
~/gcc$ make --version
GNU Make 4.3
Собрано для x86_64-redhat-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версия 3 или более поздняя <http://gnu.org/licenses/gpl.html>
Это свободное программное обеспечение: вы можете изменять и перераспределять его.
Нет ГАРАНТИИ, в пределах, разрешенных законом.
~/gcc$ git show
commit 3e89a4d5138e585713604135d4c2601244055e82 (HEAD -> master, origin/trunk, origin/master, origin/HEAD)
Автор: Джейсон Меррилл <[email protected]>
Дата:   Суб, 16 ноя 2024 15:25:04 -0500
...
~/gcc$ ls
ABOUT-NLS           config.sub       fixincludes   libcody       libitm           ltmain.sh           missing
ar-lib              configure        gcc           libcpp        libobjc          lt~obsolete.m4      mkdep
ARM                 configure.ac     gnattools     libdecnumber  libphobos        lto-plugin          mkinstalldirs
ChangeLog           contrib          gotools       libffi        libquadmath      ltoptions.m4        move-if-change
ChangeLog.jit       COPYING          include       libgcc        libsanitizer     ltsugar.m4          multilib.am
ChangeLog.tree-ssa  COPYING3         INSTALL       libgfortran   libssp           ltversion.m4        README
compile             COPYING3.LIB     install-sh    libgm2        libstdc++-v3     MAINTAINERS         SECURITY.txt
config              COPYING.LIB      libada        libgo         libtool-ldflags  maintainer-scripts  symlink-tree
config.guess        COPYING.RUNTIME  libatomic     libgomp       libtool.m4       Makefile.def        test-driver
config-ml.in        c++tools         libbacktrace  libgrust      libvtv           Makefile.in         ylwrap
config.rpath        depcomp          libcc1        libiberty     ltgcc.m4         Makefile.tpl        zlib
  1. https://gcc.gnu.org/install/index.html

EDIT: исправил некоторые детали и добавил некоторые детали

Проблема заключается в config.log – файле журнала, создаваемом при запуске configure. Явным признаком является последняя строка, указывающая на ошибку при выполнении скрипта – ненулевое значение выхода – ‘configure: exit 1’ в моем случае. Прокручивая вверх, видно, что configure не смог найти некоторые зависимости gcc (mpc, mpfr, gmp). Мне просто нужно сначала установить их, затем, когда конфигурация завершится успешно, я, вероятно, найду готовый Makefile в srcdir.

Ответ или решение

Чтобы решить проблему компиляции GCC, возникающую с сообщением об ошибке "make: *** No targets specified and no makefile found.", необходимо выполнить несколько шагов для диагностики и устранения причин. Ваша ошибка, вероятно, связана с неудачной конфигурацией сборки, которая, в свою очередь, вызвана отсутствием необходимых зависимостей.

1. Анализ ошибки

Ошибка "No targets specified and no makefile found" указывает на то, что в текущем каталоге отсутствует файл Makefile, который необходим для выполнения команды make. Это может происходить по нескольким причинам:

  • Команда configure завершилась неудачно: Это означает, что в процессе конфигурации отсутствуют необходимые библиотеки или инструменты, и, следовательно, Makefile не был создан.
  • Вы находитесь не в правильном каталоге: Убедитесь, что вы запускаете make в каталоге, где был сгенерирован Makefile, обычно это каталог, где вы выполнили configure.

2. Проверка файла config.log

Обязательно проверьте файл config.log, который находится в директории сборки (обычно это objdir/config.log). Как вы уже заметили, строчка configure: exit 1 показывает на ошибку. Вам нужно найти более подробную информацию, которая предшествует этому сообщению, чтобы понять, в чем именно заключалась проблема.

В вашем случае вы упомянули, что конфигурация не смогла найти некоторые зависимости, такие как mpc, mpfr и gmp. Это распространенные библиотеки, необходимые для сборки GCC.

3. Установка необходимых зависимостей

Чтобы успешно выполнить конфигурацию, установите недостающие библиотеки и инструменты. В зависимости от вашей системы (например, Debian/Ubuntu или Red Hat/CentOS) команды могут различаться:

Для Debian/Ubuntu:

sudo apt-get update
sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev

Для Red Hat/CentOS:

sudo yum groupinstall "Development Tools"
sudo yum install gmp-devel mpfr-devel libmpc-devel

4. Перезапуск конфигурации

После установки всех необходимых зависимостей, перейдите в папку objdir (в вашем случае это, похоже, папка ARM) и попробуйте снова выполнить конфигурацию:

cd ~/gcc/ARM
../configure --prefix=$HOME --target=aarch64-none-elf

5. Выполнение команды make

Если конфигурация прошла успешно (без ошибок в config.log), вы должны увидеть Makefile в каталоге. Теперь вы можете выполнить:

make

6. Дополнительные шаги

Если после выполнения make вы сталкиваетесь с другими ошибками, убедитесь, что все необходимые инструменты компиляции и зависимости установлены. Проконсультируйтесь с документацией на официальном сайте GCC или их сообществом для получения дополнительной информации и поддержки.

Следуя этим шагам, вы сможете устранить проблемы с компиляцией GCC и продолжить процесс установки.

Оцените материал
Добавить комментарий

Капча загружается...