Error while loading shared libraries libxrender so 1

When my app runs (or when I run from commandline) the wkhtmltopdf command I get the following error: (showing it from command line) #> wkhtmltopdf wkhtmltopdf: error while loading shared libra...

When my app runs (or when I run from commandline) the wkhtmltopdf command I get the following error: (showing it from command line)

#> wkhtmltopdf 
wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory

I noticed the lib is indeed in the /usr/lib folder but not the /lib folder. Does it matter which one of these it is in? Is there any way to get it to recognize it?

#> ls -l /usr/lib/libXrender.so*
lrwxrwxrwx 1 root root    19 Feb 17 07:20 /usr/lib/libXrender.so -> libXrender.so.1.3.0
lrwxrwxrwx 1 root root    19 Feb 17 07:20 /usr/lib/libXrender.so.1 -> libXrender.so.1.3.0
-rwxr-xr-x 1 root root 39184 Jan 29  2010 /usr/lib/libXrender.so.1.3.0

#> ls -l /lib/libXrender.so*
ls: cannot access /lib/libXrender.so*: No such file or directory

I also checked dependencies of the lib

# ldd /usr/lib/libXrender.so.1
    libX11.so.6 => /usr/lib/libX11.so.6 (0x00002b9cb5afd000)
    libc.so.6 => /lib/libc.so.6 (0x00002b9cb5e04000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x00002b9cb6143000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00002b9cb6347000)
    libdl.so.2 => /lib/libdl.so.2 (0x00002b9cb654d000)
    /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)

This is running on an EngineYard gentoo server

Promise Preston's user avatar

asked Feb 17, 2011 at 22:39

Ben's user avatar

1

The Unix packages x11-libs/libXext and x11-libs/libXrender are dependencies

Gentoo:

sudo emerge libXext libXrender

PDFkit wiki also explains in more detail how to get wkhtmltopdf working on engine yard.
PDFkit wiki

Debian or Ubuntu:

sudo apt-get install libxrender1

Tomerikoo's user avatar

Tomerikoo

17.6k16 gold badges40 silver badges59 bronze badges

answered Feb 18, 2011 at 0:10

David Barlow's user avatar

David BarlowDavid Barlow

4,8941 gold badge27 silver badges24 bronze badges

2

I had the same, issue on Debian Squeeze, amd64. Installing libxrender1 solved the issue for me.

sudo apt-get install libxrender1

answered Jun 6, 2012 at 4:12

contact920's user avatar

contact920contact920

3813 silver badges3 bronze badges

0

I need also do after:

sudo apt-get install libfontconfig1

answered Jan 9, 2014 at 9:12

Grigory Kislin's user avatar

Grigory KislinGrigory Kislin

15.9k9 gold badges123 silver badges189 bronze badges

Ran into this today on a RHEL7 machine running the static version of wkhtmltopdf. Solution was to install a few dependencies:

yum install libXrender libXext fontconfig 

answered Mar 22, 2016 at 17:09

a coder's user avatar

a codera coder

7,37920 gold badges81 silver badges128 bronze badges

1

If your system is 64 bits, and your software requires 32 bits libs, you need to add the flag «i386»,

for example on ubuntu:

sudo apt-get install libxrender1:i386

answered Aug 2, 2016 at 15:01

风间月's user avatar

风间月风间月

1411 silver badge5 bronze badges

With Ubuntu 16 (from a fresh Docker install):

apt install -y libxrender1 libxext6

Tomerikoo's user avatar

Tomerikoo

17.6k16 gold badges40 silver badges59 bronze badges

answered Aug 19, 2016 at 8:06

Thomas Decaux's user avatar

Thomas DecauxThomas Decaux

21.1k2 gold badges110 silver badges118 bronze badges

I was having the exact same problem! The solution, to me, was to install the 64bit version of wkhtmltoimage.

answered Dec 30, 2011 at 18:49

André's user avatar

AndréAndré

3252 silver badges9 bronze badges

0

sudo apt-get install xvfb

to install the dependency package.

Update the node-modules wkhtmltopdf index.js

wkhtmltopdf.command = ‘wkhtmltopdf’; to ‘wkhtmltopdf.command =
‘xvfb-run wkhtmltopdf’;’

answered Jun 14, 2018 at 10:19

kishore's user avatar

kishorekishore

1341 silver badge8 bronze badges

I had this issue after rebuilding one of my containers, while before everything was working fine. All the answers I found online didn’t work for me, so here’s how I troubleshooted and resolved:

1. Check if all dependencies are there:

ldd path/to/your/binary/file/wkhtmltopdf-amd64

Here’s what I got from that

linux-vdso.so.1 =>  (0x00007ffded169000)
libXrender.so.1 => not found
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f117bab0000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f117b806000)
libXext.so.6 => not found
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f117b4cc000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f117b2b2000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f117b0ae000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f117aea6000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f117ac89000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f117a907000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f117a5fe000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f117a3e8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f117a01e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f117bcf3000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f1179df5000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f1179bd0000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f11799ae000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f11797aa000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f11795a4000)

Where I got «not found» means the dependencies were missing

2. apt update and install

Update your apt, as it’s likely it won’t find the libraries needed to install

apt-get update

Now I installed the missing dependencies that had the «not found» in the results above. Take note that for the libxrender and libxext I had to install libxrender-dev and libxext-dev.

apt-get install -y libxrender-dev libxext-dev

answered Nov 24, 2020 at 10:09

Alex Christodoulou's user avatar

I had this same issue on running a Rails 5.2 application on an Ubuntu 18.04 production server, the issue was that there were missing dependencies for libXrender on the server

Here’s how I solved it:

Run the command below to search for the missing dependencies:

sudo apt-cache search libXrender

This will display the output below:

libxrender-dev - X Rendering Extension client library (development files)
libxrender1 - X Rendering Extension client library
libreoffice - office productivity suite (metapackage)

If you’re running on a production server, simply install libxrender1 only (for rendering PDFs):

sudo apt-get install libxrender1

Also, if possible run upgrades for outdated libraries on your server:

sudo apt upgrade

Once all these have been completed, simply restart your application server (If your application server is puma and if your setup systemd for the server):

sudo systemctl restart puma

Tomerikoo's user avatar

Tomerikoo

17.6k16 gold badges40 silver badges59 bronze badges

answered Feb 11, 2020 at 11:56

Promise Preston's user avatar

Promise PrestonPromise Preston

21.1k11 gold badges127 silver badges128 bronze badges

Note that there is an executable version of wkhtmltopdf distributed in a UPX compressed format, ldd and file will both report that this file is statically linked even though the payload requires shared libraries.

To check try

strings | fgrep UPX

If you see any «UPX» id strings then install upx and use «upx -d» on a copy of the file (as upx works in place) and then run ldd on the uncompressed file.

answered Jun 3, 2016 at 13:13

Micheál Lunny's user avatar

What worked for me (for future google searchs), on an Amazon Linux 2018:03

yum localinstall -y https://repo.almalinux.org/almalinux/8/AppStream/x86_64/os/Packages/libpng15-1.5.30-7.el8.x86_64.rpm
yum localinstall -y https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm

answered Sep 27, 2021 at 16:10

Samuel Aiala Ferreira's user avatar

Ошибка при загрузке совместно используемых библиотек: libXrender.so.1 в LinuxЯ пытаюсь использовать команду wkhtmltopdf для создания и преобразования html-страниц в pdf. Тем не менее, я сталкиваюсь с ошибками, вроде той, что показана ниже, при попытке использовать wkhtmltopdf через оболочку или скрипт Python:

Creating foo.pdf …
     ~/bin/wkhtmltox/bin/wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory
     Error: foo.pdf not found.

(Создание foo.pdf …
     ~/bin/wkhtmltox/bin/wkhtmltopdf: Ошибка при загрузке совместно используемых библиотек: libXrender.so.1: невозможно открыть совместно используемый фал: Отсутствует данный файл или директория
     Ошибка: foo.pdf не найден )

Как исправить эту проблему, не устанавливая xserver на моем сервере Ubuntu или Debian?

Вы можете найти недостающие библиотеки, используя команду ldd:

$ ldd /path/to/wkhtmltopdf

Примеры возможных выводов данных:

linux-vdso.so.1 =>  (0x00007fffdd3c6000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f64cd4bd000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f64cd27a000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f64ccfcf000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f64ccdbd000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f64cca83000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f64cc868000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f64cc664000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f64cc45c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f64cc23e000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f64cbebc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f64cbbb3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f64cb99c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f64cb5d3000)
/lib64/ld-linux-x86-64.so.2 (0x00005564cb080000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f64cb3aa000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f64cb184000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f64caf62000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f64cad5d000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f64cab57000)

Теперь вы можете искать недостающие библиотеки, используя:

$ apt-cache search libXrender

В моем случае, недостающие библиотеки были следующими:

  1. libXrender: X Rendering Extension клиентская библиотека
  2. libfontconfig1: generic font configuration библиотека – процесс работы

Исправление ошибок при загрузке совместно используемых библиотек на Ubuntu/Debian Linux

Теперь, для решения этой проблемы, вооружившись новой информацией, мне нужно использовать следующие apt-get command или apt command команды для установки libxrender1 и libfontconfig1:

$ sudo apt-get install libfontconfig1 libxrender1

Или

$ sudo apt install libfontconfig1 libxrender1

Если вы используете какой-либо другой дистрибутив Linux, вам необходимо выполнить поиск, как описано выше, и установить отсутствующие библиотеки.

Перевод: Анна Давыдова
Источник: cyberciti.biz

Это интересно:

  • Установка и настройка Apache, PHP, MySQL, phpMyAdmin на Linux (LAMP)
  • Установка и настройка сервера Apache, PHP, MySQL, phpMyAdmin на Windows 10
  • Установка Adobe Photoshop CS6 на Linux (очень простой способ)


when i trying to ran qt-linux-opensource-5.0.2-x86-offline.run I gets below error.

./qt-linux-opensource-5.0.2-x86-offline.run: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory

I have installed Qt before but I didn’t get any error.
I think the cause should below command

sudo apt-get autoremove

I ran this command to my newly installed ubuntu.
I found this article online

http://docs.alfresco.com/5.0/concepts/install-lolibfiles.html

so I ran below command

sudo apt-get install libice6 libsm6 libxt6 libxrender1 libfontconfig1 libcups2

but terminal says its already installed

libsm6 is already the newest version

can anyone tell me a way to install qt creater

asked Apr 21, 2015 at 8:11

Menuka Ishan's user avatar

4

libSM.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libSM.so.6

The program requires 32-bit libraries. You need libsm6:i386

sudo apt-get install libsm6:i386

And now, ldconfig -p | grep libSM.so.6 should look like this:

libSM.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libSM.so.6
libSM.so.6 (libc6) => /usr/lib/i386-linux-gnu/libSM.so.6

And for all other missing libraries use the same strategy:

e.g. libXrender.so.1

$ apt-file search libXrender.so.1
libxrender1: /usr/lib/x86_64-linux-gnu/libXrender.so.1
libxrender1: /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
libxrender1-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0

$ sudo apt-get install libxrender1:i386

Fabby's user avatar

Fabby

34.1k38 gold badges96 silver badges191 bronze badges

answered Apr 21, 2015 at 13:04

A.B.'s user avatar

A.B.A.B.

87.7k21 gold badges242 silver badges317 bronze badges

8

Problem

User upgraded product to latest maintenance.

After upgrade, the user attempted to start program: spadmin.sh, startup failed for the utility.

Symptom

Exception in thread «main» java.lang.UnsatisfiedLinkError: /app/cdunix/jre/ibm-java-i386-70/jre/lib/i386/xawt/libmawt.so (libXrender.so.1: cannot open shared object file: No such file or directory)
at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1230)
at java.lang.System.load(System.java:517)
at java.lang.ClassLoader.loadLibraryWithPath(Native Method)
at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1222)
at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:1194)
at java.lang.System.loadLibrary(System.java:530)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:80)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:60)
at java.security.AccessController.doPrivileged(AccessController.java:285)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1668)
at java.awt.Toolkit.<clinit>(Toolkit.java:1697)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:235)
at java.awt.Component.<clinit>(Component.java:607)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:235)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:202)

Cause

User original installation $CDHOME/jre/ibm-java-i386-60 directory was link to the 64 bit libary which allowd the libwawt.so libary to used the 64bit libraies where the libXrender.so.1 was installed.

The new installation was not link to the 64bit jre so it was calling for the 32bit libXrender.so.1

Resolving The Problem

Option 1: Point the new /ibm-java-i386-70 to a 64bit JRE

Option 2: Install the 32bit libraries for X11 (libXrender.so.1)

[{«Product»:{«code»:»SSKTYY»,»label»:»IBM Sterling Connect:Direct for UNIX»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:»Not Applicable»,»Platform»:[{«code»:»PF016″,»label»:»Linux»}],»Version»:»4.2;4.1″,»Edition»:»»,»Line of Business»:{«code»:»LOB59″,»label»:»Sustainability Software»}},{«Product»:{«code»:»SSKTYY»,»label»:»IBM Sterling Connect:Direct for UNIX»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:» «,»Platform»:[{«code»:»»,»label»:»»}],»Version»:»»,»Edition»:»»,»Line of Business»:{«code»:»LOB59″,»label»:»Sustainability Software»}}]

Новые и опытные пользователи 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 libwbclient so 0
  • Error while loading shared libraries libtinfo so 6
  • Error while loading shared libraries libtiff so 3
  • Error while loading shared libraries libstdc so 6
  • Error while loading shared libraries libssl so