CentOS 64 бит плохой эльф интерпретатор



Я только что установил версию CentOS 6 64bit, я пытаюсь установить 32-разрядное приложение на 64-разрядной машине и получил эту ошибку:




/lib / ld-linux. so. 2: Bad ELF interpreter: нет такого файла или каталога




Я новичок в linux. Как мне решить эту проблему?

705   7  

7 ответов:

вы находитесь на 64-разрядной системе, и не имеют 32-разрядной поддержки библиотеки установлены.

для установки (базовой) поддержки 32-разрядных исполняемых файлов

(если вы не используете sudo в настройках, читайте Примечание ниже)

Большинство настольных систем Linux в семействе Fedora / Red Hat:

 pkcon install glibc.i686

возможно, некоторые настольные системы Debian / Ubuntu?:

pkcon install ia32-libs

Fedora или новее Red Hat, CentOS:

 sudo dnf install glibc.i686

старше RHEL, CentOS:

   sudo yum install glibc.i686

еще более старый РЕЛ, CentOS:

  sudo yum install glibc.i386

Debian или Ubuntu:

   sudo apt-get install ia32-libs

должен захватить вас (первый, основной) библиотека вам нужно.

как только вы это сделаете, вам, вероятно, понадобится поддержка libs

любой, кто нуждается в установке glibc.i686 или glibc.i386 вероятно, столкнется и с другими зависимостями библиотеки. Для идентификации пакета, предоставляющего произвольную библиотеку, можно использовать

 ldd /usr/bin/YOURAPPHERE

если вы не уверен, что это в /usr/bin вы также можете вернуться на

 ldd $(which YOURAPPNAME)

вывод будет выглядеть так:

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found

проверьте наличие отсутствующих библиотек (например libSM.so.6 в приведенном выше выводе), и для каждого из них вам нужно найти пакет, который его предоставляет.

команды для поиска пакета в семействе дистрибутивов

Fedora / Red Hat Enterprise / CentOS:

 dnf provides /usr/lib/libSM.so.6

или, на старом RHEL / CentOS:

 yum provides /usr/lib/libSM.so.6

или, на Debian / Ubuntu:

во-первых, установите и загрузите базу данных для apt-file

 sudo apt-get install apt-file && apt-file update

затем поиск с

 apt-file find libSM.so.6

обратите внимание на префикс /usr/lib в (обычном) случае; редко, некоторые библиотеки все еще живут под /lib по историческим причинам ... в типичных 64-битных системах 32-битные библиотеки живут в /usr/lib и 64-битные библиотеки проживают в /usr/lib64.

(Дебиан/Убунту организовать мульти-архитектура библиотек иначе.)

установка пакетов для отсутствующих библиотек

выше должно дать вам имя пакета, например:

libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo        : fedora
Matched from:
Filename    : /usr/lib/libSM.so.6

в этом примере имя пакета libSM и имя 32-битной версии пакета -libSM.i686.

затем вы можете установить пакет, чтобы захватить необходимую библиотеку с помощью pkcon в GUI, или sudo dnf/yum/apt-get по мере необходимости.... Например pkcon install libSM.i686. При необходимости, вы можете указать полная версия. Например sudo dnf install ibSM-1.2.0-2.fc15.i686.

некоторые библиотеки будут иметь обозначение" эпоха " перед их именем; это можно опустить (любопытные могут прочитать Примечания ниже).

Примечания

предупреждение

кстати, проблема, с которой вы столкнулись, либо подразумевает, что ваш RPM (ОТВ. DPkg / DSelect) база данных повреждена, или что приложение, которое вы пытаетесь запустить, не было установлено через Диспетчер пакетов. Если вы новичок в Linux, вы, вероятно, хотите избегайте использования программного обеспечения из источников, отличных от вашего менеджера пакетов, когда это возможно...

если вы не используете "sudo" в своей настройке

тип

su -c

каждый раз, когда вы видите sudo, например,

su -c dnf install glibc.i686

об целеуказатель эпохи в названиях библиотека

обозначение "эпоха" перед именем является артефактом того, как базовые библиотеки RPM обрабатывают номера версий; например

2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files
Repo        : fedora
Matched from:
Filename    : /usr/lib/libpng.so.3

здесь 2: можно опустить; просто pkcon install libpng.i686 или sudo dnf install libpng-1.2.46-1.fc16.i686. (Это смутно подразумевает что-то вроде: в какой-то момент номер версии libpng пакет откатился назад, и" эпоха "должна была быть увеличена, чтобы убедиться, что более новая версия будет считаться" более новой " во время обновлений. Или случилось что-то подобное. Дважды.)


Обновлено чтобы уточнить и более полно охватить различные параметры диспетчера пакетов (март 2016 г.)

только что столкнулся с той же проблемой на недавно установленной 64-разрядной машине CentOS 6.4. Одна команда yum исправит это плюс 99% подобных проблем:

yum groupinstall "библиотеки совместимости"

либо префикс это с 'sudo' или запустить как root, в зависимости от того, что лучше всего подходит для вас.

В общем, когда вы получаете такую ошибку, просто сделайте

yum provides ld-linux.so.2

затем вы увидите что-то вроде:

glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo        : fedora
Matched from:
Provides    : ld-linux.so.2

а затем вы просто запустите следующее, Как написал BRPocock (в случае, если вам интересно, какая логика была...):

yum install glibc.i686

попробовать

$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6

надеюсь, что это очищает.

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

таким образом, мой вклад был для всех, кто пытался установить IBM Integration Toolkit из пакета шины интеграции IBM.

при попытке запустить команду " Installation Manager "из папки /Integration_Toolkit/IM_Linux (файл для запуска - "install") вы получаете сообщение об ошибке, показанное в этом сообщении.

дальнейшие инструкции по устранению этой проблемы вы найдете в этом веб-сайте IBM страница: https://www-304.ibm.com/support/docview.wss?uid=swg21459143

надеюсь, что это помогает для тех, кто пытается установить это.

судо ням установить fontconfig программа FreeType libfreetype.так.6 libfontconfig.так.1 с libstdc++.так.6

Я бы добавил для Debian вам нужен хотя бы один компилятор в системе (согласно 32-разрядные библиотеки Debian Stretch и Jessie).

Я установил apt-get install -y gcc-multilib для запуска 32-битного исполняемого файла в моем контейнере docker на основе debian: jessie.

Comments

    Ничего не найдено.