Error while loading shared libraries cannot open shared object file linux

error while loading shared libraries: libncurses.so.5:

but it doesnt help. I’ve recently installed libncurses (before using android studio). What should I do?

13 Answers 13

If libncurses is not installed then install it and try again.

for 32-bit binaries : sudo apt-get install libncurses5:i386

for 64-bit binaries : sudo apt-get install libncurses5

Also install the collection of libraries by using this command,

sudo apt-get install ia32-libs

I am getting this during the package install E: Package ‘ia32-libs’ has no installation candidate for 20.04

I met E: Unable to locate package libncurses5:i386 , and solve it by dpkg —add-architecture i386 && apt update .

error while loading shared libraries: libncurses.so.5

If you see this, your distro probably has a newer version of libncurse installed. First find out what version of libncurses your distro has:

$ ls -1 /usr/lib/libncurses* /usr/lib/libncurses.so /usr/lib/libncurses++.so /usr/lib/libncurses++w.so /usr/lib/libncursesw.so /usr/lib/libncurses++w.so.6 /usr/lib/libncursesw.so.6 /usr/lib/libncurses++w.so.6.0 /usr/lib/libncursesw.so.6.0 

In this case, we are dealing with version 6, so we make two symlinks:

$ sudo ln -s /usr/lib/libncursesw.so.6.0 /usr/lib/libncurses.so.5 $ sudo ln -s /usr/lib/libncursesw.so.6.0 /usr/lib/libtinfo.so.5 

After this, the program should run normally.

Likewise, this does not answer the question, since it refers to software which was not available at the time the question was asked.

Although it probably does not solve the original persons problem, it solved mine on Arch 64, that produced the exact same error message as OP.

ls: cannot access ‘/usr/lib/libncurses*’: No such file or directory apt says both libncurses5 and libncurses6 are installed

If you are absolutely sure that libncurses, aka ncurses, is installed, as in you’ve done a successful ‘ls’ of the library, then perhaps you are running a 64 bit Linux operating system and only have the 64 bit libncurses installed, when the program that is running (adb) is 32 bit.

If so, a 32 bit program can’t link to a 64 bit library (and won’t locate it anyway), so you might have to install libcurses, or ncurses (32 bit version). Likewise, if you are running a 64 bit adb, perhaps your ncurses is 32 bit (a possible but less likely scenario).

You can also check for the library in the LD_LIBRARY_PATH. It is possible that your path isn’t set correctly so it isn’t finding the library.

In my case apt says both 32-bit and 64-bit versions of each version 5 and 6 of libncurses are installed, yet Android Studio is still complaining about the non-existence of libncurses.so.5 .

@Tooniis Version numbers aren’t architectures, architectures roughly match the CPU in the computer, while version numbers match the «old / newer» releases. You can still be missing the correct architecture of a library, if you have the right version installed under a different architecture. This is only confusing because Intel and AMD chips support multiple architectures, i386 for backwards compatibility, and x86_64 which is the modern architecture.

Читайте также:  Линукс как переименовать компьютер

I told you I have both versions 5 and 6 for both architectures i386 and amd64 installed, so Android Studio should be able to find whatever it needs.

@Tooniis Sorry, didn’t see that part about «both architectures». In this case, it is typically because you have a missing / misconfigured LD_LIBRARY_PATH in the shell before you launch Android Studio, or your Android Studio maintains its own configuration for this functionality. I’d check in the compiler options (Sorry Android Studio has changed a lot from when I used it heavily, so I can’t just point you to the option). In any case, once you get the /usr/lib/ (32bit) or /usr/lib64 (64 bit) configured you should see success.

Источник

Ошибка error while loading shared libraries

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

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

Что означает 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 install libfuse2

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

sudo apt install libfuse-dev

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

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

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

Читайте также:  Подключение ftp командную строку linux

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

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

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

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

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

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/. Но после этого желательно обновить кэш:

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

error while loading shared libraries: libgsl.so.0: cannot open shared object file: No such file or directory

I use gsl. After I compiled my .cpp file and run it, I faced with below error: error while loading shared libraries: libgsl.so.0: cannot open shared object file: No such file or directory I found same as this problem in: https://groups.google.com/forum/#!topic/cortex_var/6vluX7pP0Sk & Linux error while loading shared libraries: cannot open shared object file: No such file or directory & http://www.gnu.org/software/gsl/manual/html_node/Shared-Libraries.html And I have done as in the above links wrote but the error is still remained. Can anyone help me?

It is located at right place I reinstalled gsl from terminal and above error is not exist now. But I have segmentation fault and should come over it. Thanks any way

Thank you for your link provided. I found gnu.org/software/gsl/manual/html_node/Shared-Libraries.html is useful to me. Have you solved your problem?

8 Answers 8

To make it work do the following steps

$LD_LIBRARY_PATH= path to your gsl lib folder inside the gsl installation folder $export LD_LIBRARY_PATH 

First, you need to locate the file (libgsl.so.0). You can do this, for example, by using the find command:

sudo find / -name "libgsl.so.0" 

Let us assume, the file is located in /usr/local/lib . (If the file has not been found, install the corresponding package or download the source, build it and install it.) Now, you have two options:

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

This adds the path of the library to an environment variable. The disadvantage of this option is, that it is only valid for the current session. It will not work for other users. It will not work once you log off and on again.

Читайте также:  Где файловая система linux

Review your /etc/ld.so.conf . If /usr/local/lib is not listed there, add it. Now, run ldconfig to detect the shared object file and add it to some system-wide index.

Источник

How to fix: ‘cannot open shared object file : No such file or directory’ on Ubuntu

net2

Sometimes, when you try to install a program or a package from its source code, you might end up getting an error which looks like :

“error while loading shared libraries: cannot open shared object file No such file or directory”

In general, if the package shared library name is lib, the error sometimes shows the following :

“ error while loading shared libraries: lib.so.X: cannot open shared object file: No such file or directory “

These dynamically generated shared libraries , which are required by executables, are stored under /lib or /usr/lib directories.

The command below can help find out the libraries that are needed for a given executable :

As a quick workaround, you could try to fix the issue by running ldconfig command below :

Now at runtime, the system would need to locate the ‘.so’ corresponding library file since the package or the program is linked with the library shared version.

To locate the library, invoke the command below :

sudo find / -name lib_file.so.x

or you could use apt search command. Jot down the path in which the lib_file.so.x is found, path_to_so_file.

To include the folder in which the library is installed, the shell variable LD_LIBRARY_PATH has to be provided.

If LD_LIBRARY_PATH is not defined (run echo $LD_LIBRARY_PATH to find out), you could set it using the command (in the Bash shell) :

Now using the path of the .so file that you found above, path_to_so_file, run the commands below :

export LD_LIBRARY_PATH $ ./your_package

You can find out more about shared libraries here .

If you like the content, we would appreciate your support by buying us a coffee. Thank you so much for your visit and support.

Nikolaus Oosterhof

Nikolaus holds a degree in software development and has a strong passion for all things tech-related, especially gadgets with screens. Though he is nostalgic for older phone models, he’s a retired gamer and continues to enjoy programming in open-source environments. Additionally, Nikolaus enjoys writing about Linux, macOS and Windows and has experience designing web pages.

You Might Also Like

How to Install ChatGPT on Ubuntu 22.04

How to Install ChatGPT on Ubuntu 22.04

How to resize images on Ubuntu 18.04

March 5, 2023

How to resize images on Ubuntu 18.04

Best tips to maximize Teamwork

September 20, 2021

Источник

Оцените статью
Adblock
detector