Компиляция gcc-4.8.1: libmpc.so.2 не может открыть предварительные требования для загрузки общих объектных файлов

Оказывается, с этой проблемой сталкивались многие. Веб-сайт GNU настоятельно рекомендует запускать

./contrib/download_prerequisites

в исходном каталоге, чтобы избежать проблем с связыванием MPC, MPFR и GMP. Следующая ссылка содержит инструкции, которым я следовал: http://gcc.gnu.org/wiki/InstallingGCC которые я перечислил здесь:

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

FAQ по этому адресу: http://gcc.gnu.org/wiki/FAQ#configure_suffix утверждает, что при компиляции не возникнет проблем с поиском файлов, связанных с MPC, если они находятся в подкаталоге исходного каталога gcc-4.8.1. Бег

./contrib/downlaod_prerequisites

загружает MPC в правильное место, но я все еще получаю эту ошибку после запуска make:

checking for x86_64-unknown-linux-gnu-gcc... /home/xxxx/gcc-4.8.1-build/./gcc/xgcc -B/home/xxxx/gcc-4.8.1-build/./gcc/ -B/home/xxxx/gcc-4.8.1-install/x86_64-unknown-linux-gnu/bin/ -B/home/xxxx/gcc-4.8.1-install/x86_64-unknown-linux-gnu/lib/ -isystem /home/xxxx/gcc-4.8.1-install/x86_64-unknown-linux-gnu/include -isystem /home/xxxx/gcc-4.8.1-install/x86_64-unknown-linux-gnu/sys-include   
checking for suffix of object files... configure: error: in `/home/xxxx/gcc-4.8.1-build/x86_64-unknown-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.

Открытие /home/xxxx/gcc-4.8.1-build/x86_64-unknown-linux-gnu/libgcc/config.log показывает следующую ошибку:

/home/mgiamou/gcc-4.8.1-build/./gcc/cc1: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory

Часто задаваемые вопросы по GNU (http://gcc.gnu.org/wiki/FAQ#configure_suffix ) говорят, что эта ошибка является симптомом неправильной установки MPC. Любая помощь приветствуется.


person MattG    schedule 26.08.2013    source источник
comment
Вы точно следовали инструкции из шага 1 или сначала пробовали что-то другое и только потом запускали скрипт contrib? Можете ли вы просмотреть журналы для командной строки, которая создала cc1 (должна содержать -o cc1)?   -  person Marc Glisse    schedule 26.08.2013
comment
Я следовал инструкциям последовательно; Я ничего не пробовал заранее. Командная строка, которая создает cc1, очень большая, что мне особенно нужно искать?   -  person MattG    schedule 26.08.2013
comment
Любой флаг -L, относящийся к MPC. Затем убедитесь, что в этом каталоге действительно есть libmpc.a, а не libmpc.so. Затем убедитесь, что ни в одном из других путей, на которые указывает флаг -L, нет libmpc.so.   -  person Marc Glisse    schedule 26.08.2013
comment
И libmpc.a, и libmpc.so@ присутствуют! Там же находятся libmpc.so.1@ и libmpc.so.2. Мешают ли они загрузке MPC в исходной папке?   -  person MattG    schedule 26.08.2013
comment
Это не точный ответ. Где эти вещи libmpc? Какие флаги -L вы нашли?   -  person Marc Glisse    schedule 27.08.2013
comment
Единственный флаг -L, который я нашел, был папкой lib64 моей предыдущей установки gcc, и именно там находятся вещи libmpc.   -  person MattG    schedule 27.08.2013
comment
Это ненормально, благодаря download_prerequisites make-файлы должны вызывать сборку gmp/mpfr/mpc и добавлять флаги -L к этим новым библиотекам. Кроме того, не могли бы вы удалить libmpc.so (символическую ссылку), где бы он ни находился? Вы можете легко вернуть его позже, если хотите (надеясь, что вы не получите несовместимые включаемые файлы и библиотеку).   -  person Marc Glisse    schedule 27.08.2013
comment
Я добавил путь к каталогу -L в LD_LIBRARY_PATH, и установка заработала.   -  person MattG    schedule 27.08.2013


Ответы (1)


У меня не была установлена ​​последняя версия binutils. Убедитесь, что у вас установлена ​​последняя версия при установке последней версии gcc.

person MattG    schedule 27.09.2013