32 bit linux libraries

Arch Linux

You are not logged in.

#1 2011-07-25 15:19:53

Installing 32-bit libraries

I have Arch 64-bit. Followed the instructions here:

But when I try to run Second Life I get:

The most common problems when launching the Viewer (particularly
‘bin/do-not-directly-run-secondlife-bin: not found’ and ‘error while
loading shared libraries’) may be solved by installing your Linux
distribution’s 32-bit compatibility packages.
For example, on Ubuntu and other Debian-based Linuxes you might run:
$ sudo apt-get install ia32-libs ia32-libs-gtk ia32-libs-kde ia32-libs-sdl

#2 2011-07-25 15:27:46

Re: Installing 32-bit libraries

why not simply enable multilib repo in pacman.conf and install the required libraries?

There’s no such thing as a stupid question, but there sure are a lot of inquisitive idiots !

#3 2011-07-25 15:37:53

Re: Installing 32-bit libraries

I spent half the night installing anything I could find that might be related. Problem is, I don’t know what to install.

#4 2011-07-25 15:42:54

Re: Installing 32-bit libraries

how did you install the game? If you used a properly built PKGBUILD, it should have installed the dependencies for you

There’s no such thing as a stupid question, but there sure are a lot of inquisitive idiots !

#5 2011-07-25 15:43:48

Re: Installing 32-bit libraries

#6 2011-07-25 15:45:17

Re: Installing 32-bit libraries

#7 2011-07-25 15:47:16

Re: Installing 32-bit libraries

that’s the reason why. the names of packages in ubuntu may or may not match package names in Arch. No wonder you couldn’t find all of them. Try the package karol linked and see if that works.

There’s no such thing as a stupid question, but there sure are a lot of inquisitive idiots !

#8 2011-07-25 15:56:21

Re: Installing 32-bit libraries

The problem is, the official Second Life viewer will not connect to InWorldz which I use a lot.

Nice to know there is an AUR package for regular SL though.

I would downgrade to 32bit Arch but I have 6gb of RAM.

#9 2011-07-25 18:01:37

Re: Installing 32-bit libraries

Doesn’t look like Arch has a has a 32-bit environment. You have to setup a chroot jail ie: https://wiki.archlinux.org/index.php/Ar … bit_system

I think I might be installing Fedora this weekend.

I’m really just trying to get away from Ubuntu.

#10 2011-07-25 18:17:29

Re: Installing 32-bit libraries

There’s no such thing as a stupid question, but there sure are a lot of inquisitive idiots !

#11 2011-07-25 19:52:13

Re: Installing 32-bit libraries

Thanks. Just a suggestion for 64-bit users. You guys might work on a script like apt-get install ia32-libs that sets up a basic environment for 32-bit programs. For some odd reason people still don’t develop 64-bit programs even though we’ve had 64-bit computers for the last 10 years. Go figure.

Читайте также:  Звуки apple для windows

Arch is nice. I like the idea of building just what I need, but not being able to easily run 32-bit programs is a deal breaker.

#12 2011-07-25 19:54:12

Re: Installing 32-bit libraries

Thanks. Just a suggestion for 64-bit users. You guys might work on a script like apt-get install ia32-libs that sets up a basic environment for 32-bit programs. For some odd reason people still don’t develop 64-bit programs even though we’ve had 64-bit computers for the last 10 years. Go figure.

Arch is nice. I like the idea of building just what I need, but not being able to easily run 32-bit programs is a deal breaker.

The thing is, [multilib] repo should work if you want to use 32-bit apps on a 64-bit system.

#13 2011-07-26 00:10:57

Re: Installing 32-bit libraries

Other than the link I posted above, the only other instructions are:

«OUTDATED:All 32-bit-packages can be found in the [community]-repository. The packages are kept in sync to the ones from arch32. Use them at your own risk.»

Do you have a link to a wiki or tutorial I can use to run 32-bit programs on Arch 64? I’ve been looking for two days now and haven’t found a way to do it natively.

#14 2011-07-26 00:14:13

Re: Installing 32-bit libraries

The multilib repo looks like it contains 32-bit program, but what if I buy a game that’s 32 bit? What if I need to run software that isn’t in the repo? In most distros you just install the 32-bit libraries and it all works seamlessly.

#15 2011-07-26 00:16:39

Re: Installing 32-bit libraries

Sorry, keep having thoughts, always a bad thing

I also don’t want to do this every time I want to install a program from some other source:

Boot into Arch64, startx, open a term.

$ xhost +local:
$ su
# mount /dev/sda1 /mnt/arch32
# mount —bind /proc /mnt/arch32/proc
# chroot /mnt/arch32
# su your32bitusername
$ /usr/bin/command-you want # or eg: /opt/mozilla/bin/firefox
Some 32-bit apps (like OpenOffice) may require additional bindings. The following lines can be placed in rc.local to ensure you get all you need for the 32-bit apps (assuming /mnt/arch32 is mounted in fstab):

mount —bind /dev /mnt/arch32/dev
mount —bind /dev/pts /mnt/arch32/dev/pts
mount —bind /dev/shm /mnt/arch32/dev/shm
mount —bind /proc /mnt/arch32/proc
mount —bind /proc/bus/usb /mnt/arch32/proc/bus/usb
mount —bind /sys /mnt/arch32/sys
mount —bind /tmp /mnt/arch32/tmp
#comment the following line if you do not use the same home folder
mount —bind /home /mnt/arch32/home
You can then type in a term:

$ xhost +localhost
$ sudo chroot /mnt/arch32 su your32bitusername /opt/openoffice/program/soffice

Источник

Библиотеки в Ubuntu

Как вы знаете каждая программа, установленная на вашем компьютере, состоит из нескольких частей. Это непосредственно исполняемый файл, который вы запускаете через терминал, а также библиотеки с набором функций, которые может использовать программа.

Все, без исключения, программы используют библиотеки. Даже если это ваша программа и у нее нет своих библиотек, она использует стандартную библиотеку языка программирования С.

Читайте также:  Windows не видит драйвера видеокарты

В этой статье мы подробно рассмотрим что такое библиотеки Ubuntu, как их устанавливать, где брать и что делать если библиотека установлена, а программа говорит что ее нет. Мы не будем трогать создание библиотек, это совсем не наша тема. Как обычно, начнем с теории.

Что такое библиотеки

Библиотеки в Linux содержат наборы функций или если сказать проще алгоритмов или действий для решения определенных задач. Например, если программе нужно вывести строку на экран она не начинает сама закрашивать нужные пиксели, а просто обращается к отвечающей за это функции из библиотеки, то же самое если программе нужно прочитать содержимое файла, она не работает с секторами жесткого диска, ей достаточно вызвать функцию из стандартной библиотеки с (libc.so) и передать ей в параметрах имя нужного файла, а библиотека уже вернет ей запрашиваемые данные.

На самом деле, такая структура реализации программного обеспечения очень выгодна, поскольку достаточно написать алгоритм лишь один раз и его смогут использовать все программы просто загружая библиотеку.

Не нужно думать что библиотеки есть только в Linux, в Windows они тоже есть, только имеют другой формат и расширение dll. В Linux же все библиотеки находятся в папах /lib/, /usr/lib, /usr/local/lib или для 64 битных систем также появляется папка lib64 во всех этих подкаталогах, для библиотек специфичных для этой архитектуры. Библиотека имеет расширение .so и ее название начинается со слова lib. Например, libfuse.so, libc.so.

Дальше, после расширения файла .so идет номер версии библиотеки. Номер версии меняется всякий раз, когда разработчики вносят в нее изменения ломающие совместимость со всеми рассчитанными на нее программами. В таком случае в системе будут уже две библиотеки и каждая программа будет использовать правильную версию. Например, glibc.so.6 и glibc.so.5.

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

linux-vdso.so.1 (0x00007ffd99167000)
libmount.so.1 => /usr/lib64/libmount.so.1 (0x00007f0f6beb0000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0f6bb08000)
libblkid.so.1 => /usr/lib64/libblkid.so.1 (0x00007f0f6b8c8000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f0f6b6a4000)
/lib64/ld-linux-x86-64.so.2 (0x000055aca8227000)
libuuid.so.1 => /usr/lib64/libuuid.so.1 (0x00007f0f6b49f000)
libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f0f6b238000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f0f6b034000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0f6ae17000)

Также эта информация может быть полезна при создании портативных версий программ. А теперь давайте рассмотрим как устанавливаются библиотеки в Ubuntu.

Установка библиотек в Ubuntu

Обычно, если вы используете менеджер пакетов вашего дистрибутива для установки новых программ, то библиотеки устанавливаются автоматически. Но если вы хотите собрать программу из исходников или запустить 32 битную программу на 64 битной системе могут начаться проблемы. Например, при запуске или компиляции программы вы получаете ошибку:

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

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

apt search libfuse

Как видите, найдено два варианта библиотеки, libfuse2 и libfuse-dev.

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

sudo apt install libfuse2

Читайте также:  Librera pro для windows

Если же вам нужно собрать приложение из исходников, то кроме обычной библиотеки понадобятся заголовочные файлы, в которых содержится описание реализованных в библиотеке функций. Такие пакеты имеют приставку dev, например, libfuse-dev, тогда нужно устанавливать этот пакет, а он уже в зависимостях потянет и обычную библиотеку, если она еще не установлена:

sudo apt install libfuse-dev

Много проблем может вызвать ситуация, когда вам нужно запустить 32 битную программу в 64 битной системе. Например, если вы установили 64 битную версию библиотеки, а программа все равно говорит о том, что не может ее найти, возможно это 32 битная программа и ей необходима именно 32 библиотека. Если программа не устанавливается с помощью пакетного менеджера, вам тоже придется устанавливать библиотеки вручную.

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

На скриншоте показаны два варианта вывода программы, для 32 бит, в нашем случае Skype и для 64 — mount.

Для того чтобы установить библиотеку Ubuntu с архитектурой i386 сначала необходимо добавить поддержку архитектуры i386 в dpkg:

sudo dpkg —add-architecture i386

Затем обновляем наши репозитории:

sudo apt update

А во время установки нужной вам библиотеки теперь необходимо указать архитектуру через двоеточие после имени пакета:

sudo apt install libfuse-dev:i386

Если вы уверенны, что библиотека установлена, но программа все равно говорит, что такой библиотеки нет, то возможно, ей просто нужна другая версия библиотеки. Например, в системе есть libudev.so.0, а программе нужна libudev.so.0.1. Такое случается, если вы попытаетесь установить пакет для другого дистрибутива, особенно в Red Hat системах. Если в репозиториях нет нужной версии библиотеки, то скорее всего, они одинаковы, и можно просто создать символическую ссылку:

ln -s /lib/libudev.so.0 /lib/libudev.so.0.1

Затем программа найдет нужную библиотеку.

Управление библиотеками в Linux

Установка библиотек ubuntu уже рассмотрена, но хотелось бы упомянуть еще пару моментов. Как я сказал, библиотеки ubuntu размещаются в определенных каталогах, но расположение библиотек можно настроить.

Перед тем как библиотека будет подключена к программе, ее должна найти в системе специальная программа — менеджер библиотек. Он берет адреса библиотек из файла /etc/ld.cache, а этот файл формируется утилитой ldconfig, на основе файлов конфигурации /etc/ld.so.conf.

В этом файле перечислены все пути к библиотекам. Если вы хотите добавить свою папку для библиотек просто добавьте ее в этот файл:

Затем обновите кэш просто выполнив:

Теперь ваша библиотека может быть загружена программой, например, вы можете добавить путь /opt/lib или даже /home/user/lib. И система будет нормально грузить оттуда библиотеки.

Посмотреть какие библиотеки находятся в кеше ld.cache можно командой:

Также мы можем проверить находится ли там определенная библиотека:

ldconfig -p | grep libjpeg

Еще один способ указать программе где нужно искать библиотеки — это переменная LD_LIBRARY_PATH. Например:

Теперь программы, запускаемые в этом терминале, кроме стандартных путей поиска библиотек, будут использовать и указанную папку.

Выводы

Вот и все. Теперь вы знаете как работают библиотеки Ubuntu, как выполняется установка библиотек Ubuntu и делать так, чтобы программа видела нужную ей библиотеку. У новичков это может вызвать очень много головной боли, но теперь вы знаете что делать и избежите многих ошибок. Если у вас остались вопросы, пишите в комментариях!

Источник

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