Сборка GCC 4.6 - libmpfr.so.4 - не удается открыть общий объектный файл - PullRequest
5 голосов
/ 06 мая 2011

Я пытаюсь собрать GCC 4.6 под CentOS версии 5.5 (Final).Я недавно собрал GMP-5.0.1, MPC-0.9 и MPFR-3.0.1 и использовал следующую команду настройки:

.. / configure --prefix = / users /xxxx / apps / mygcc4.6 - проверка на отключение --enable-threads = posix --enable-languages ​​= c, c ++, fortran --with-mpfr = / users / xxxx / code / gcc / mpfr-3.0.1-install-кипр --with-gmp = / users / xxxx / code / gcc / gmp-5.0.1-install-cyprus --with-mpc = / users / xxxx / code / gcc / mpc-0.9-install-cyprus

После этого я запускаю make и примерно через 5 минут получаю следующее сообщение об ошибке:

проверка суффикса объектных файлов ... configure: error: in /users/xxxx/code/gcc/gcc-4.6.0/obj/x86_64-unknown-linux-gnu/libgcc': configure: error: cannot compute suffix of object files: cannot compile See config.log 'для более подробной информации.

config.log указывает, что задействована недавно созданная программа (cc1):

/ users / xxxx / code/gcc/gcc-4.6.0/obj/./gcc/cc1

Действительно, если я запускаю эту программу без аргументов, я получаю то же сообщение об ошибке, найденное в config.log:

ошибка при загрузке общих библиотек: libmpfr.so.4: не удается открыть общий объект file: Нет такого файла или каталога

Однако libmpfr.so.4 находится в подкаталоге lib того каталога, который предоставлен для настройки с использованием флага --with-mpfr, как показано выше.У меня LD_LIBRARY_PATH и LIBRARY_PATH пустые.Любая идея, как я могу пройти эту ошибку?

Ответы [ 3 ]

5 голосов
/ 06 мая 2011

Убедитесь, что ваша библиотека находится в заданном каталоге, а не в каком-то подкаталоге lib.Используйте export LD_LIBRARY_PATH=/users/xxxx/code/gcc/mpfr-3.0.1-install-cyprus, как вы уже предложили; -)

3 голосов
/ 31 марта 2012

Я знаю, что эта тема довольно устарела.Но я должен был прокомментировать и сказать, что после 5 с лишним часов удара головой об стену по очень похожей проблеме (проверка суффикса объектных файлов ... configure: error: не могу вычислить суффикс объектных файлов: не могу скомпилировать) иПрочитав руководство по установке, множество форумов и попробовав различные вещи в рассматриваемой системе, я нашел этот короткий, но очень полезный пост.Эта проблема была точно связана с LD_LIBRARY_PATH.Короче говоря, при сборке из исходного кода, если вы нажмете на эту стену, экспортируйте переменную LD_LIBRARY_PATH, чтобы указать на каталог сборки исходного кода для библиотек.Все равно работал на меня.

Удачи, ребята.

0 голосов
/ 15 октября 2018

Я знаю, что эта тема довольно устарела.Я столкнулся с похожими проблемами при установке mpfr на WSL.Сборка была в порядке, и mpfr установлен правильно, но когда я написал небольшой C-файл, чтобы посмотреть, смогу ли я получить доступ к заголовочному файлу и распечатать версию для установки - я мог скомпилировать C-файл, но когда я попытался запустить скомпилированный объект -даст мне ошибку.Файл C был

#include <stdio.h>
#include <mpfr.h>

int main (void) {
    printf ("MPFR library: %-12s\nMPFR header: %s (based on %d.%d.%d)\n",
    mpfr_get_version (), MPFR_VERSION_STRING, MPFR_VERSION_MAJOR,
    MPFR_VERSION_MINOR, MPFR_VERSION_PATCHLEVEL);
    return 0;
}

Я компилировал это с

gcc -o version mpfr_presence.c -lmpfr -lgmp

Но когда я попытался запустить это с ./version, я получил бы следующую ошибку,

./version: error while loading shared libraries: libmpfr.so.6: cannot open shared object file: No such file or directory

Я решил эту ошибку, используя,

sudo apt-get update
sudo apt-get install libmpfr4

А потом, когда сказал, что libmpfr4 уже в последней версии, просто чтобы быть уверенным,

sudo apt-get install --reinstall libmpfr4

Теперь ./version дает мне

MPFR library: 4.0.1
MPFR header: 4.0.1 (based on 4.0.1)
...