Подтвердить что ты не робот

Gcc компиляция "не может вычислить суффикс объектных файлов: невозможно скомпилировать"

Я действительно читаю книгу LFS (версия 7.1), и я заблокирован на странице 53. Пытаясь скомпилировать gcc, я попробовал следующую команду:

./configure --target=$LFS_TGT --prefix=$LFS/build/gcc-build --disable-nls\
--disable-shared --disable-multilib --disable-decimal-float --disable-threads\
--disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath\
--disable-target-libiberty --disable-target-zlib\
--enable-languages=c\
--without-ppl --without-cloog\
--with-mpfr-include=$LFS/source/mpfr/src
--with-mpfr-lib=$LFS/source/mpfr/src/.libs\
--with-gmp-include=/mnt/LFS/source/gmp\
--with-gmp-lib=/mnt/LFS/source/gmp/.libs\
--with-mpc-include=/mnt/LFS/source/mpc/src\
--with-mpc-lib=/mnt/LFS/source/mpc/src/.libs

для запуска configure script gcc (конечно, я уже скомпилировал mpfr, mpc и gmp). Но как только я запускаю:

make -j4

Я получаю следующую ошибку:

checking for suffix of object files... configure: error: in `/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[1]: *** [configure-target-libgcc] Error 1

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

4b9b3361

Ответ 1

Эта проблема вызвана проблемой пути библиотеки dyanmic link, когда тестовые программы пытаются связать с libmpc/libmpfr/libgmp.

Добавьте ниже переменную окружения, чтобы связать ссылку ld с правильным файлом:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/mpc/lib/

Затем попробуйте снова построить gcc.

Ответ 2

"* Строительство GCC не является тривиальным, но это не сложно, если внимательно следовать инструкциям. Многие люди спешат пытаться построить его, не читая надлежащим образом установочные документы и не допуская одну или несколько из этих распространенных ошибок:

1) не запускается. /configure из gcc src dir (это не поддерживается) = > вам нужно запустить configure из-за пределов исходного каталога gcc

2) Примечание: если GCC динамически связывается с необходимыми библиотеками (GMP/MPFR/MPC), то общие библиотеки должны находиться в пути динамического компоновщика (LD_LIBRARY_PATH), как при создании gcc, так и при использовании установленного компилятора. * "

Простой пример (без динамической ссылки на GMP/MPFR/MPC):

tar xzf gcc-4.8.0.tar.gz
cd gcc-4.8.0
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.8.0/configure --prefix=/opt/gcc-4.8.0 
make
make install

Источники: Advogato Doc - GNU Doc

Ответ 3

Это сообщение об ошибке может возникнуть по нескольким причинам. Лучший способ выяснить, какой из них - проверить файл журнала /home/manu/gcc/gcc/i 686-pc-linux-gnu/libgcc/config.log в приведенном ниже примере. Или в исходном случае для плакатов '/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc' и найдите последнюю строку ошибки.

Указание вопросов GCC: http://gcc.gnu.org/wiki/FAQ#configure_suffix

Как и любой проект GNU, GCC использует GNU autotools для обычно настраивать компиляцию для специфики сборки система. Конфигурация script, таким образом, использует небольшие тестовые программы - обычно называемый conftest.c - для проверки, если определенные функции и/или функции доступны. Если компиляция такой тестовой программы сбой, вы увидите сообщение об ошибке вроде:

 checking for suffix of object files... configure: error: in
 `/home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc': configure: error:
 cannot compute suffix of object files: cannot compile See `config.log'
 for more details. make[2]: *** [configure-stage1-target-libgcc] Error
 1 make[2]: Leaving directory `/home/manu/gcc/gcc'

Это сообщение об ошибке довольно вводит в заблуждение, и часто проблема ничего общего с сообщением. Вы должны проверить файл 'config.log' в каталоге, где произошла ошибка. В примере выше, вам нужно будет проверить файл config.log в каталоге '/Дом/мана/ССАГПЗ/ССАГПЗ/i686-ПК-Linux-гну/libgcc. Может быть несколько тестовые программы, которые не выполнялись во время конфигурации, но некоторые из них отказы не являются критическими. Проверьте последнюю запись ошибки в файле.

Общими причинами этого сообщения об ошибке являются:

  • Необходимые библиотеки для сборки GCC отсутствуют, в частности, MPFR, GMP и MPC. Если они установлены как общие библиотеки, они должны находиться в runtime, чтобы их можно было найти. Пожалуйста, следуйте инструкции в ответ на Почему моя. /configure и make fail?

  • Компилятор разбился. Например, если есть такая ошибка, как 'conftest.c: внутренняя ошибка компилятора:', это указывает на ошибку в компилятор. Если вы используете немодифицированную версию GCC, пожалуйста, следуйте процедура для сообщения об ошибке.