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