Компиляция 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

для запуска сценария настройки 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 для него и попробовал решения, которые я нашел, но ничего не сработало. Кто-нибудь знает, почему я получаю эту ошибку?

3 ответов


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

добавить ниже переменной среды, чтобы разрешить ld ссылка на правильный так:

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

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


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

1) не запускать ./ configure from 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


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

цитирование GCC FAQ:http://gcc.gnu.org/wiki/FAQ#configure_suffix

Как и любой из проектов GNU, GCC использование GNU autotools для обычно настройка компиляции для специфики сборки система. Таким образом, сценарий configure использует небольшие тестовые программы - обычно называют 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.войти в каталог, где произошла ошибка. В примере выше вам нужно будет проверить ' config.файл журнала в каталоге '/дом/Ману/ОКС/ОКС/i686 в-ПК-линукс-дистрибутив GNU/на libgcc'. Их может быть несколько. тестовые программы, которые не удалось во время настройки, но некоторые из этих неудачи не критичны. Проверьте последнюю запись об ошибке в файле.

распространенных причин для этого сообщения об ошибке:

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

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