Error while loading shared libraries libmpc so 3

I want to install gcc4.8.1 on ubuntu 10.04. Here are my installing steps: Install libgmp, libmpfr and libmpc. After switch to gcc4.8.1 source code dir, run "./configure --prefix=/usr/bin/gcc4.8....

I want to install gcc4.8.1 on ubuntu 10.04.

Here are my installing steps:

  1. Install libgmp, libmpfr and libmpc.

  2. After switch to gcc4.8.1 source code dir, run «./configure —prefix=/usr/bin/gcc4.8.1 —with-gmp=/opt/pkg/gmp5.1.2 —with-mpfr=/opt/pkg/mpfr3.1.2 —with-mpc=/opt/pkg/mpc1.0.1»

  3. make

  4. export LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:/opt/pkg/mpfr3.1.2/lib:/opt/pkg/mpc1.0.1/lib

  5. sudo make install.

In the last step I get this error:

/usr/local/sbin/gcc-4.8.1/host-i686-pc-linux-gnu/gcc/cc1: error while loading shared   libraries: libmpc.so.3: cannot open shared object file: No such file or directory
make[5]: *** [install-exec-hook] Error 1
make[5]: Leaving directory `/usr/local/sbin/gcc-4.8.1/i686-pc-linux-gnu/libjava'
make[4]: *** [install-exec-am] Error 2
make[4]: Leaving directory `/usr/local/sbin/gcc-4.8.1/i686-pc-linux-gnu/libjava'
make[3]: *** [install-am] Error 2
make[3]: Leaving directory `/usr/local/sbin/gcc-4.8.1/i686-pc-linux-gnu/libjava'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/usr/local/sbin/gcc-4.8.1/i686-pc-linux-gnu/libjava'
make[1]: *** [install-target-libjava] Error 2
make[1]: Leaving directory `/usr/local/sbin/gcc-4.8.1'
make: *** [install] Error 2

I have switched to the libmpc library path and tested libmpc.so.3 with ldd. It has been installed successfully. Why does it say it cannot open shared object libmpc.so.3? How can I fix it?

KiaMorot's user avatar

KiaMorot

1,66811 silver badges22 bronze badges

asked Jul 2, 2013 at 12:43

bucherren's user avatar

3

According to your suggest, I have installed gcc4.8.1 successfully. Here are my steps:

  1. Remove gmp, mpfr and mpc from /opt/pkg.

  2. Install gmp, mpfr and mpc with the default configure. These packages will be installed in /usr/local/lib.

  3. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH.

  4. Enter the gcc source dir, run «./configure».

  5. make.

  6. Add symbol links:

    sudo ln -s /usr/local/lib/libgmp.so.10 /usr/lib/libgmp.so.10

    sudo ln -s /usr/local/lib/libmpfr.so.4 /usr/lib/libmpfr.so.4

    sudo ln -s /usr/local/lib/libmpc.so.3 /usr/lib/libmpc.so.3

  7. sudo make install.

Than you KiaMorot. Thank you trojanfoe.

answered Jul 6, 2013 at 2:12

bucherren's user avatar

bucherrenbucherren

2991 gold badge3 silver badges13 bronze badges

3

I don’t believe any of the answers here address the issue. Your problem is the last two steps

export LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:/opt/pkg/mpfr3.1.2/lib:/opt/pkg/mpc1.0.1/lib
sudo make install

exporting your LD_LIBRARY_PATH is correct, but then you reset all environment variables when you change to root user with sudo in the last step.

One way to get around this:

sudo -s  # become root user
export LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:/opt/pkg/mpfr3.1.2/lib:/opt/pkg/mpc1.0.1/lib
make install  # don't use sudo here

answered Jul 31, 2015 at 2:57

Martin Konecny's user avatar

Martin KonecnyMartin Konecny

56.2k19 gold badges134 silver badges153 bronze badges

If anybody stumbles upon this using their own manually-built version of libgmp, libmpfr and libmpc instead of the system-provided ones:

export LD_LIBRARY_PATH=/opt/your-prefix-directory

is necessary for make itself, i.e. even when gcc ./configure was run with

--with-gmp=/opt/your-prefix-directory --with-mpc=/opt/your-prefix-directory --with-mpfr=/opt/your-prefix-directory

you need to specify where the linker should go looking for libgmp and friends.

answered Sep 16, 2015 at 18:03

cidermole's user avatar

cidermolecidermole

5,5321 gold badge14 silver badges21 bronze badges

0

You have to check if the libmpc.so.3 is a successfully created symbolic link to libmpc.so.3.0.0. This error may arise because you have installed this library manually and the sym. link may be missing. You could try this:

sudo ln -s /opt/pkg/mpc1.0.1/lib/libmpc.so.3.0.0 /opt/pkg/mpc1.0.1/lib/libmpc.so.3

Syntax of ln is ln -s <real path to file> <symbolic link name>. For more check out the man page of ln.

answered Jul 2, 2013 at 12:54

KiaMorot's user avatar

KiaMorotKiaMorot

1,66811 silver badges22 bronze badges

1

4 ответа

Вы должны проверить, является ли libmpc.so.3 успешно созданной символической ссылкой на libmpc.so.3.0.0. Эта ошибка может возникнуть из-за того, что вы установили эту библиотеку вручную и sym. ссылка может отсутствовать. Вы можете попробовать следующее:

sudo ln -s /opt/pkg/mpc1.0.1/lib/libmpc.so.3.0.0 /opt/pkg/mpc1.0.1/lib/libmpc.so.3

Синтаксис ln равен ln -s <real path to file> <symbolic link name>. Для получения дополнительной информации о странице man ln.

KiaMorot
02 июль 2013, в 10:17

Поделиться

По вашему мнению, я успешно установил gcc4.8.1. Вот мои шаги:

  1. Удалите gmp, mpfr и mpc из /opt/pkg.

  2. Установите gmp, mpfr и mpc с настройкой по умолчанию. Эти пакеты будут установлены в /usr/local/lib.

  3. export LD_LIBRARY_PATH =/usr/local/lib: $ LD_LIBRARY_PATH.

  4. Введите источник gcc source, запустите «./configure».

  5. делать.

  6. Добавить символьные ссылки:

    sudo ln -s/usr/local/lib/libgmp.so.10/usr/lib/libgmp.so.10

    sudo ln -s/usr/local/lib/libmpfr.so.4/usr/lib/libmpfr.so.4

    sudo ln -s/usr/local/lib/libmpc.so.3/usr/lib/libmpc.so.3

  7. sudo сделать install.

Чем вы KiaMorot. Спасибо, троянец.

bucherren
06 июль 2013, в 00:59

Поделиться

Если кто-то наткнется на это, используя собственную версию libgmp, libmpfr и libmpc, созданную вручную, вместо системных:

export LD_LIBRARY_PATH=/opt/your-prefix-directory

необходимо make сами, т.е. даже когда gcc ./configure была запущена с

--with-gmp=/opt/your-prefix-directory --with-mpc=/opt/your-prefix-directory --with-mpfr=/opt/your-prefix-directory

вам нужно указать, куда должен идти компоновщик искать libgmp и друзей.

cidermole
16 сен. 2015, в 15:42

Поделиться

Я не думаю, что любой из ответов здесь затрагивает эту проблему. Ваша проблема — последние два шага

export LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:/opt/pkg/mpfr3.1.2/lib:/opt/pkg/mpc1.0.1/lib
sudo make install

экспортирование вашего LD_LIBRARY_PATH является правильным, но затем вы сбросите все переменные среды, когда вы перейдете на пользователя root с помощью sudo на последнем шаге.

Один из способов обойти это:

sudo -s  # become root user
export LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:/opt/pkg/mpfr3.1.2/lib:/opt/pkg/mpc1.0.1/lib
make install  # don't use sudo here

Martin Konecny
31 июль 2015, в 01:30

Поделиться

Ещё вопросы

  • 0рисовать два объекта, используя openGL одновременно
  • 1Как повысить точность измерений в iTextSharp?
  • 1работы выполняются без картостроителей и редукторов
  • 0Как заставить фильтр искать информацию только в одном столбце с помощью jQuery?
  • 1Как я могу заказать данные, возвращенные в анонимном виде?
  • 1Python Datareader не может извлечь данные о запасах из Morningstar
  • 0Как заблокировать значок, установленный сервером?
  • 1Android — выбранная позиция элемента в списке
  • 1расшифровка и чтение
  • 0Как я могу передать аргументы исполняемой программе, которую я вызываю (через CreateProcess)?
  • 0AngularJS — Запуск функции один раз при загрузке
  • 1Как получить элемент ListView с помощью Android onItemClick?
  • 0Как класс может объявить всех своих параметров шаблона variadic друзьями?
  • 1Как найти элемент в базе данных, используя linq
  • 0Почему Flask возвращает <embed> файлы для загрузки вместо их отображения
  • 1Обработка Python любого исключения дает ошибку KeyboardInterrupt
  • 1Отображение ввода текстового поля для метки?
  • 0Как перебирать div, не зная, что просматривал пользователь и что он хочет посмотреть
  • 1Java: escape-последовательность файла свойств для квадратной скобки
  • 1Вставить Java-апплет на страницу GitHub
  • 0urlRouteProvider. иначе приводит к бесконечному циклу в угловых
  • 1Используйте функцию связывания дважды [дубликата]
  • 0Как исправить неизвестный столбец MySQL Query Alias? 2018
  • 1Как вытащить строки из массива, адаптированного списка для кликаемого элемента списка
  • 0MySQL — выбрать строки, в которых число в объединенной таблице равно 1
  • 0Данные MySQL не отображаются в соответствии с идентификатором в таблице HTML
  • 0OMNET отправлять сообщения
  • 0ACRA Вставить отчет в базу данных моего сервера
  • 1CompositeDisposable — детерминированный порядок?
  • 1использовать библиотеку UMD в угловой 2/4
  • 0Задержка jQuery fadeIn из-за нежелательного поведения
  • 0PHP Lua система регистрации
  • 0Используя PHP для отправки электронной почты, измените ОТ, чтобы это не имя моего сервера
  • 1Как заполнить значения Java-объекта в JSP
  • 0jQuery Progress Bar PHP Upload не отвечает правильно
  • 1концентрические излучающие круги d3
  • 1Как зациклить эту функцию после последнего значения
  • 0Как использовать фильтры в Angularjs? [Дубликат]
  • 1Почему concurrent.futures.ThreadPoolExecutor (). Submit не возвращается немедленно?
  • 0Лучший способ выслушать изменения — AngularJS
  • 1Динамическая засыпка фрейма данных Pandas на основе указанной глубины
  • 1Не можете найти источник?
  • 1Получить количество дублированных значений на категорию / группу в Python Python
  • 0Обновите и выберите в одном запросе. Ошибка синтаксиса SQL в Scala
  • 0Группировать по родителю, но не по ребенку
  • 1Лучшая стратегия для реализации этого поведения в Android-приложении?
  • 0как получить внучку от родителя в php
  • 1Пользовательский интерфейс в wpf для пользовательской задачи SSIS
  • 0PhoneGap / JQueryMobile приложение сборки теряет стиль
  • 0Как связать данные HTML в свойстве JSON в Angular
  • Home
  • Forum
  • Qt
  • Newbie
  • Debugging existing CMake project — «error loading shared libraries: libmpc»

  1. 23rd February 2015, 20:18


    #1

    Default Debugging existing CMake project — «error loading shared libraries: libmpc»

    I just installed QT creator and I have an existing program with tons of C++ source files that I compiled before using CMakeLists and make on my Linux machine. I opened that project on Qt and went to Debug->Start debugging, but I get an error message «error while loading shared libraries: libmpc.so.3: cannot open shared object file: no such file or directory». However, this doesn’t make sense because when I used `make` before, I never got this error. Am I doing something wrong?


  2. 23rd February 2015, 21:15


    #2

    Default Re: Debugging existing CMake project — «error loading shared libraries: libmpc»

    The run time environment your program finds itself in does not include libmpc.so. This is not the Qt library or Cmake’s fault.
    Check that libmpc is available on your system.
    Check that the run environment in Qt Creator on the Projects tab contains what it should, particularly the LD_LIBRARY_PATH if libmpc is not in a system default library location.


  3. 23rd February 2015, 23:30


    #3

    Default Re: Debugging existing CMake project — «error loading shared libraries: libmpc»

    The run time environment your program finds itself in does not include libmpc.so. This is not the Qt library or Cmake’s fault.
    Check that libmpc is available on your system.
    Check that the run environment in Qt Creator on the Projects tab contains what it should, particularly the LD_LIBRARY_PATH if libmpc is not in a system default library location.

    Why do I need libmpc.so? I didn’t need it when I compiled the project using `make`. When I tried to search for its location, I see lots of directories, but they all say `Permission denied` on the command prompt

    I also did not list the entire message in the OP. It is:

    /opt/apps/ossw/applications/gcc/gcc-4.6/sl6/libexec/gcc/x86_64-unknown-linux-gnu/4.6.3/cc1plus:-1: error: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory


  4. 24th February 2015, 09:21


    #4

    Default Re: Debugging existing CMake project — «error loading shared libraries: libmpc»

    Now that makes a difference: a compile time error, not a run time error. It is your compiler that requires libmpc to execute and cannot find it (libmpc is a normal dependency for GCC). This command would likely show «not found» libraries:

    1. ldd /opt/apps/ossw/applications/gcc/gcc-4.6/sl6/libexec/gcc/x86_64-unknown-linux-gnu/4.6.3/cc1plus

    To copy to clipboard, switch view to plain text mode 

    Reinstall this compiler and the libraries it depends on, or select a compiler that does work.


Similar Threads

  1. Replies: 1

    Last Post: 12th September 2015, 23:46

  2. Replies: 1

    Last Post: 13th September 2013, 00:12

  3. Replies: 6

    Last Post: 25th June 2013, 22:13

  4. Replies: 1

    Last Post: 6th April 2012, 01:08

  5. Replies: 0

    Last Post: 20th November 2011, 13:41

Bookmarks

Bookmarks


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
  • BB code is On
  • Smilies are On
  • [IMG] code is On
  • [VIDEO] code is On
  • HTML code is Off

Forum Rules

Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.

I’m compiling GCC on a build server to get access to the latest version of gfortran; after building gmp, mpfr, and mpc into specially-prefixed directories in usr/local, I configured and make’d gcc, which resulted in the following errors:

../../gcc/cp/g++spec.c: In function ‘void lang_specific_driver(cl_decoded_option**, unsigned int*, int*)’:
../../gcc/cp/g++spec.c:352: warning: NULL used in arithmetic
/usr/bin/ld: warning: libgmp.so.3, needed by /usr/local/mpfr-3.1.2/lib/libmpfr.so, may conflict with libgmp.so.10
configure: error: in `/tabletop/scratch/gcc-4.9.1/build/x86_64-unknown-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[1]: *** [stage1-bubble] Error 2
make: *** [all] Error 2

Inside config.log is the following:

configure:3373: $? = 0
configure:3362: /tabletop/scratch/gcc-4.9.1/build/./gcc/xgcc -B/tabletop/scratch/gcc-4.9.1/build/./gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gnu/include -isystem /usr/local/x86_64-unknown-linux-gnu/sys-include    -v >&5
Reading specs from /tabletop/scratch/gcc-4.9.1/build/./gcc/specs
COLLECT_GCC=/tabletop/scratch/gcc-4.9.1/build/./gcc/xgcc
COLLECT_LTO_WRAPPER=/tabletop/scratch/gcc-4.9.1/build/./gcc/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --disable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran --with-gmp=/usr/local/gmp-6.0.0 --with-mpfr=/usr/local/mpfr-3.1.2 --with-mpc=/usr/local/mpc-1.0.2
Thread model: posix
gcc version 4.9.1 (GCC)
configure:3373: $? = 0
configure:3362: /tabletop/scratch/gcc-4.9.1/build/./gcc/xgcc -B/tabletop/scratch/gcc-4.9.1/build/./gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gnu/include -isystem /usr/local/x86_64-unknown-linux-gnu/sys-include    -V >&5
xgcc: error: unrecognized command line option '-V'
xgcc: fatal error: no input files
compilation terminated.
configure:3373: $? = 1
configure:3362: /tabletop/scratch/gcc-4.9.1/build/./gcc/xgcc -B/tabletop/scratch/gcc-4.9.1/build/./gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gnu/include -isystem /usr/local/x86_64-unknown-linux-gnu/sys-include    -qversion >&5
xgcc: error: unrecognized command line option '-qversion'
xgcc: fatal error: no input files
compilation terminated.
configure:3373: $? = 1
configure:3389: /tabletop/scratch/gcc-4.9.1/build/./gcc/xgcc -B/tabletop/scratch/gcc-4.9.1/build/./gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gnu/include -isystem /usr/local/x86_64-unknown-linux-gnu/sys-include    -o conftest -g -O2   conftest.c  >&5
/tabletop/scratch/gcc-4.9.1/build/./gcc/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory
configure:3392: $? = 1
configure:3580: checking for suffix of object files
configure:3602: /tabletop/scratch/gcc-4.9.1/build/./gcc/xgcc -B/tabletop/scratch/gcc-4.9.1/build/./gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gnu/include -isystem /usr/local/x86_64-unknown-linux-gnu/sys-include    -c -g -O2  conftest.c >&5
/tabletop/scratch/gcc-4.9.1/build/./gcc/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory
configure:3606: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU C Runtime Library"
| #define PACKAGE_TARNAME "libgcc"
| #define PACKAGE_VERSION "1.0"
| #define PACKAGE_STRING "GNU C Runtime Library 1.0"
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL "http://www.gnu.org/software/libgcc/"
| /* end confdefs.h.  */
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }
configure:3620: error: in `/tabletop/scratch/gcc-4.9.1/build/x86_64-unknown-linux-gnu/libgcc':
configure:3623: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.

The first log (the stderr output of make) seems to indicate there’s a conflict between libgmp.so and libmpc.so, but the second (config.log from build/x86_64-unknown-linux-gnu/include) seems to show «-V» getting passed as a file and causing a missing input error. I’ve grepped recursively through the whole build directory and I haven’t found anything that matches that broken option- can anyone shed some light on what might be the original cause(s) of these issues?

Я установил GCC под Linux, который не может подключиться к Интернету. Через три дня я сошел с ума. Я прочитал много руководств в Интернете и сделал много обходных путей. Наконец, установка прошла успешно. Запишите мой процесс установки и следите за моей установкой. Шаги должны быть установлены успешно.В конце статьи приведены ошибки и решения в процессе установки.

  1. http://ftp.gnu.org/gnu/gcc/ Загрузите версию GCC, которую хотите установить на этом веб-сайте.
  2. Создайте новую папку «GCC» в каталоге пользователя (имя можно выбрать) и загрузите установочный пакет в папку GCC в каталоге пользователя.
  3. использоватьtar zxvf filename.tar.gz Команда для распаковки сжатого пакета
  4. ftp://gcc.gnu.org/pub/gcc/infrastructure/ Загрузите три пакета зависимостей: GMP, MPFR, MPC
  5. Поскольку MPFR зависит от GMP, а MPC зависит от GMP и MPFR, сначала необходимо установить GMP, затем — MPFR, а затем — MPC.
  6. Загрузите сжатый пакет в папку «GCC».
  7. Распаковка: tar jxvf gmp-x.x.x.tar.bz2, после распаковки появляется папка gmp-x.x.x
  8. В папке GCC создайте новую папку con_gmp (свободный выбор, то же самое ниже)
  9. Введите con_gmp и выполните команду: ../gmp-x.x.x/configure –prefix = / data / home / XXX / GCC / gmp
  10. Выполните команду: make
  11. Выполните команду: make install
  12. Вернитесь в папку GCC
  13. Распаковка: tar jxvf mpfr-x.x.x.tar.bz2, после распаковки появляется папка mpfr-x.x.x
  14. В папке GCC создайте новую папку con_mpfr
  15. Введите con_mpfr и выполните команду: ../mpfr-x.x.x/configure —prefix = / data / home / XXX / GCC / mpfr —with-gmp = / data / home / XXX / GCC / gmp
  16. Выполните команду: make
  17. Выполните команду: make install
  18. Вернитесь к файлу GCC
  19. Распаковка: tar zxvf mpc-x.x.x.tar.gz, после распаковки появляется папка mpc-x.x.x
  20. В папке GCC создайте новую папку con_mpc
  21. Введите con_mpc и выполните команду: .. / mpc-xxx / configure —prefix = / data / home / XXX / GCC / mpc —with-gmp = / data / home / XXX / GCC / gmp —with- mpfr = / data / home / XXX / GCC / mpfr
  22. Выполнить команду: сделать
  23. Выполните команду: make install
  24. Вернитесь к файлу GCC
  25. Создайте новую папку con_gcc, войдите в папку
  26. Выполните команду: ../gcc-8.3.0/configure —prefix = / data / home / XXX / GCC / gcc —enable-threads = posix —disable-check —disable-Multilib —enable-languages ​​= c, c ++ —with-gmp = / data / home / XXX / GCC / gmp —with-mpfr = / data / home / XXX / GCC / mpfr —with-mpc = / data / home / XXX / GCC / mpc
  27. Выполните команду: make

  28. Выполнить команду: сделать установку

  29. Настройте переменные среды: Выполните команду: export PATH = / data / home / XXX / GCC / gcc / bin: $ PATH Выполните команду: export LD_LIBRARY_PATH = / data / home / XXX / GCC / gcc / lib /: / data / home / XXX / GCC / gcc / lib64: $ LD_LIBRARY_PATH

Проблемы при установке:

Ошибка на шаге 26:

ошибка:

make[3]: *** [c/c-lang.o] Error 1

make[3]: Leaving directory `/home/XXX/XXXX/GCC'

make[2]: *** [all-stage1-gcc] Error 2

make[2]: Leaving directory ``/home/XXX/XXXX/GCC'

make[1]: *** [stage1-bubble] Error 2

make[1]: Leaving directory ``/home/XXX/XXXX/GCC'

make: *** [all] Error 2

Решение (причина этого решения объясняется в Интернете):

Выполните команду: unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE

Ошибка на шаге 26:

ошибка:

error while loading shared libraries: libmpc.so.3

Решение: (На самом деле в сети много решений, здесь я тоже выбираю одно из них)

Причина проблемы в том, что файл libmpc.so.3 не может быть найден в каталоге.

  1. Вы можете запустить команду в каталоге пользователя: find -name libmpc.so.3, найти каталог нужного файла
  2. Выполните команду: vi bashrc
  3. Добавить: export LD_LIBRARY_PATH = / (абсолютный путь к файлу) / lib: $ LD_LIBRARY_PATH
  4. Выполните команду: source bashrc
  5. Если есть другие похожие файлы с этой проблемой, вы также можете использовать аналогичный метод.

Ошибка на шаге 26:

ошибка:

make [2]: *** [сравнить] ошибка 1
 make [2]: Выход из каталога `/ home / XXX / XXXX / GCC '
 make [1]: *** [stage3-bubble] ошибка 2
 make [1]: Выход из каталога `/ home / XXX / XXXX / GCC '
 make: *** [all] Ошибка 2

Решение:

  1. Выполните команду: make distclean
  2. Вернитесь к шагу 26

Новые и опытные пользователи Linux могут сталкиваться с ошибкой error loading shared libraries во время запуска программ, также с ней могут сталкиваться программисты и все желающие компилировать программное обеспечение в своей системе. Эта ошибка в дословном переводе означает что возникла проблема во время загрузки общей библиотеки. О том что такое библиотеки и зачем они нужны вы можете узнать из статьи библиотеки Linux.

В этой же статье мы рассмотрим что значит ошибка error while loading shared libraries более подробно, а главное, как ее решить.

Даже если вы не компилируете свои программы, то вы можете увидеть ошибку error while loading shared libraries: имя_библиотеки: cannot open shared object file: No such file or directory достаточно часто во время установки новых программ не через пакетный менеджер или программ, предназначенных для другого дистрибутива. Как я уже говорил, она возникает потому, что система не может найти библиотеку.

А вот почему ее нельзя найти и загрузить, это уже интересно. Этому может быть несколько причин:

  • Библиотека не установлена в системе;
  • Библиотека установлена, но неизвестно куда;
  • Библиотека установлена правильно, но имеет не ту версию.

При решении проблемы мы будем руководствоваться именно этими причинами и пытаться их решить.

Как исправить ошибку?

1. Библиотека не установлена

Первый вариант, тут все понятно, библиотеки просто нет в системе, поэтому мы и получаем такую ошибку. Верный способ ее решения — просто найти пакет библиотеки с помощью пакетного менеджера и установить ее. Обычно, пакеты с библиотеками называются так же, как и сами библиотеки с префиксом lib.

Например, если нам не хватает библиотеки libfuse2.so, то мы можем найти ее в Ubuntu такой командой:

sudo apt search libfuse2

Затем осталось только установить ее:

sudo apt install libfuse2

Если перед вами стоит задача собрать программу из исходников, то вам понадобится не только установить саму библиотеку, но и заголовочные файлы для нее:

sudo apt install libfuse-dev

И так для любой библиотеки. Но это не всегда помогает.

2. Библиотека находится не в том каталоге

Бывает что библиотека установлена, мы установили ее или она поставлялась вместе с программой, но ошибка как была, так и есть. Причиной этому может быть то, что загрузчик Linux не может найти библиотеку.

Поиск библиотек выполняется по всех папках, которые указаны в конфигурационных файлах /etc/ld.conf.d/. По умолчанию, это такие каталоги, как /usr/lib, /lib, /usr/lib64, /lib64. Если библиотека установлена в другой каталог, то, возможно, это и есть причина проблемы.

Вы можете посмотреть какие библиотеки сейчас доступны загрузчику с помощью команды:

ldconfig -p

Найти, где находится ваша библиотека можно с помощью команды locate. Например, нас интересует библиотека librtfreader.so:

 locate librtfreader

Теперь мы знаем, что она находится по адресу /opt/kingsoft/wps-office/office6/. А значит, для работы программы необходимо сделать чтобы загрузчик библиотек ее видел. Для этого можно добавить путь в один из файлов /etc/ld.so.conf.d/ или же в переменную LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=/opt/kingsoft/wps-office/office6/

Опять же, так вы можете поставить с любой библиотекой, которая взывает ошибку. Еще один более простой метод — это просто создать символическую ссылку на нужную библиотеку в правильной папке:

ln -s /opt/kingsoft/wps-office/office6/librtfreader.so /usr/lib/librtfreader.so

3. Неверная версия библиотеки

Эта причина ошибки довольно часто встречается при использовании программ не для вашего дистрибутива. Каждая библиотека имеет дополнительную версию, так называемую ревизию, которая записывается после расширения .so. Например, libav.so.1. Так вот, номер версии меняется всякий раз, когда в библиотеку вносятся какие-либо исправления.

Часто возникает ситуация, когда в одном дистрибутиве программа собирается с зависимостью от библиотеки, например, libc.so.1, а в другом есть только libc.so.2. Отличия в большинстве случаев здесь небольшие и программа могла бы работать на второй версии библиотеки. Поэтому мы можем просто создать символическую ссылку на нее.

Например, библиотеки libusb-1.0.so.1 нет. Но зато есть libusb-1.0.so.0.1, и мы можем ее использовать:

Для этого просто создаем символическую ссылку на библиотеку:

sudo ln -s /usr/lib/libusb-1.0.so.0.1 /usr/lib/libusb-1.0.so.1

В большинстве случаев программа не заметит подмены и будет работать, как и ожидалось. Также для решения этой проблемы можно попытаться найти нужную версию библиотеки в интернете для своей архитектуры и поместить ее в папку /usr/lib/ или /usr/lib64/. Но после этого желательно обновить кэш:

sudo ldconfig

Выводы

В этой статье мы рассмотрели почему возникает ошибка Error while loading shared libraries, а также как ее решить. В большинстве случаев проблема решается довольно просто и вы получите работоспособную программу. Надеюсь, эта информация была полезной для вас.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Понравилась статья? Поделить с друзьями:
  • Error while loading shared libraries libidn so 11
  • Error while loading shared libraries libglu so 1
  • Error while loading shared libraries libgl so 1 wrong elf class elfclass64
  • Error while loading shared libraries libgconf 2 so 4 cannot open shared object file
  • Error while loading shared libraries libdl so 2