Действительно ли возможно установить библиотеки на 32 бита в системе на 64 бита?

У меня есть совместно использованные установленные библиотеки на 32 бита, все же я все еще получаю эту ошибку при попытке установить Pogoplug:

./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64

Есть ли что-то еще, что я должен сделать, чтобы заставить программу загружаться из библиотек на 32 бита?

Подобный вопрос задали ранее в этом году, но не дали ответа.

8
задан 28 June 2012 в 09:25

2 ответа

Для некоторых библиотек возможно иметь и 32-разрядные и 64-разрядные библиотеки, установленные в 64-разрядной системе. Это доступно через ia32-libs пакет на Ubuntu 10.04 и прежде. Согласно списку файлов ia32-libs, существует нет libfuse.so.2 файл включен. Это означает, что у Вас не может быть обеих архитектуры, установленной за один раз.

Начиная со Сновещательной Ubuntu 11.10 для пакетов возможно позволить одновременную установку для различной архитектуры, которую называют "Мультидугой". К сожалению, если я могу верить списку файлов libfuse2 на Сновещательном этот пакет еще не перешелся. Это может быть определено от зависимостей от пакета: если пакет зависит от multiarch-support (как libdrm2), это имеет поддержку мультисупинатора. Однако это не гарантия, что пакет может быть установлен для нескольких архитектуры одновременно.

Для запросов локального кэша для возможностей мультидуги пакета сказать libc6, выполненный:

apt-cache show libc6 | grep ^Multi-Arch:

Для этой команды вывод Multi-Arch: same. Это означает, что и 32-разрядные и 64-разрядные версии пакета могут быть установлены за один раз. Если нет никакого вывода, пакет не готов к мультисупинатору. Другие возможные значения foreign (не co-installable, но это может использоваться для удовлетворения зависимостей другой архитектуры), и allowed (iirc, только одному пакету позволяют быть установленным за один раз, но пакет может использоваться для удовлетворения зависимостей других пакетов),

Необходимо смочь установить 32-разрядные пакеты в 64-разрядной системе с:

sudo apt-get install packagename:i386

Создание 32-разрядного libfuse для 64-разрядных машин

Так как 32-разрядная библиотека предохранителя не предоставляется ia32-libs, у Вас нет никакого другого выбора, чем создание его самих.

  1. Установите зависимости от сборки для предохранителя и получите исходный код:

    sudo apt-get install ia32-libs libc6-i386
    sudo apt-get build-dep fuse
    apt-get source fuse
    
  2. Настройте исходное дерево и создайте предохранитель (скорректируйте имя каталога в случае необходимости):

    cd fuse-2.8.4
    CFLAGS=-m32 ./configure --host=i386-linux-gnu
    make -j 50
    
  3. Установите 32-разрядную библиотеку предохранителя (скорректируйте версию соответственно):

    sudo ln -s libfuse.so.2.8.4 /usr/local/lib/libfuse.so.2
    sudo install -m644 lib/.libs/libfuse.so.2.8.4 /usr/local/lib/
    
  4. Обновите кэш компоновщика:

    sudo ldconfig
    
  5. (Дополнительно) Удалите исходные файлы:

    cd ..
    rm -r fuse-2.8.4
    
9
ответ дан 23 November 2019 в 05:43

Да существует. Установка ia32. После того как это сделано, можно теперь установить любые программы основанные на 32 битах на платформе на 64 бита.

0
ответ дан 23 November 2019 в 05:43

Другие вопросы по тегам:

Похожие вопросы: