Автор Тема: 32-x битные приложения на 64-х битном сервере  (Прочитано 8466 раз)

Оффлайн vak

  • Участник
  • *
  • Сообщений: 70
Counter-Strike заработал, а вот Battlefield нет...
error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
А есть общий алгоритм определения какой пакет добавить?
« Последнее редактирование: 19.01.2011 12:00:43 от vak »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Counter-Strike заработал, а вот Battlefield нет...
error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
А есть общий алгоритм определения какой пакет добавить?
1. Определяем библиотеку :
[cas@altair apt-conf-platform5]$ /sbin/ldconfig -p | grep libz.so.1
libz.so.1 (libc6,x86-64) => /lib64/libz.so.1
2. Определяем имя пакета по файлу
[cas@altair apt-conf-platform5]$ rpm -qf /lib64/libz.so.1
zlib-1.2.3-alt5.1
3. Ставим этот пакет + префикс .i586:
apt-get install i586-zlib
Примечание: можно упростить и сделать одной командой:
apt-get install $(rpm -qf `/sbin/ldconfig -p | grep libz.so.1 | head -n 1 | cut -f2 -d'>'` --qf 'i586-%{name}')(подставляйте требуемую библиотеку вместо libz.so.1)

UPD: исправил код для префикса.
« Последнее редактирование: 19.01.2011 13:41:48 от Skull »
Андрей Черепанов (cas@)

Оффлайн vak

  • Участник
  • *
  • Сообщений: 70
Что то видимо не правильно делаю...
Разве может такое быть?

[root@game1 etc]# apt-get install zlib.i586
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
E: Невозможно найти пакет zlib.i586

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
E: Невозможно найти пакет zlib.i586
i586-zlib
Там не суффикс, а префикс.

Исправил советы.
« Последнее редактирование: 19.01.2011 13:42:07 от Skull »
Андрей Черепанов (cas@)

Оффлайн vak

  • Участник
  • *
  • Сообщений: 70
E: Невозможно найти пакет zlib.i586
i586-zlib
Там не суффикс, а префикс.

Исправил советы.

Спасибо, уважаемый, получилось.

Оффлайн vak

  • Участник
  • *
  • Сообщений: 70
[bf2@game1 bf2]$ ./run_bf2
/home/bf2/bf2/bin/ia-32/bf2: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

Пытаюсь найти...
[root@game1 vak]# /sbin/ldconfig -p|grep libstdc++.so.5
[root@game1 vak]#

Пытаюсь найти похожее...
[root@game1 vak]# /sbin/ldconfig -p|grep libstdc++.so.
        libstdc++.so.6 (libc6,x86-64) => /usr/lib64/libstdc++.so.6
        libstdc++.so.6 (libc6) => /usr/lib/libstdc++.so.6

[root@game1 vak]# rpm -qf /usr/lib/libstdc++.so.6
i586-libstdc++4.4-4.4.1-alt3

[root@game1 vak]# rpm -qf /usr/lib64/libstdc++.so.6
libstdc++4.4-4.4.1-alt3

Устанавливаю i586-libstdc++4.4 и libstdc++4.4 и в итоге тоже самое:
[bf2@game1 bf2]$ ./run_bf2
/home/bf2/bf2/bin/ia-32/bf2: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

Что можно сделать в этом случае? Какой пакет нужно доустановить?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Возможно проблема в run_bf2?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Пытаюсь найти похожее...
[root@game1 vak]# /sbin/ldconfig -p|grep libstdc++.so.
        libstdc++.so.6 (libc6,x86-64) => /usr/lib64/libstdc++.so.6
        libstdc++.so.6 (libc6) => /usr/lib/libstdc++.so.6
А вот это крайне нежелательно. Новая версия (soname) может быть несовместима с требуемой библиотекой. Можете попробовать хак: сделать симлинк:
ln -s /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.5
ldconfig
Но результаты могут быть непредсказуемы.

P.S. Лучше сначала определите используемые библиотеки командой readelf -d программа | grep Shared
Андрей Черепанов (cas@)

Оффлайн vak

  • Участник
  • *
  • Сообщений: 70
Можете попробовать хак: сделать симлинк:
ln -s /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.5
ldconfig
Но результаты могут быть непредсказуемы.

Да, это фокус не получился...
[bf2@game1 bf2]$ ./run_bf2
/home/bf2/bf2/bin/ia-32/bf2: /usr/lib/libstdc++.so.5: version `CXXABI_1.2' not found (required by /home/bf2/bf2/bin/ia-32/bf2)
/home/bf2/bf2/bin/ia-32/bf2: /usr/lib/libstdc++.so.5: version `GLIBCPP_3.2.2' not found (required by /home/bf2/bf2/bin/ia-32/bf2)
/home/bf2/bf2/bin/ia-32/bf2: /usr/lib/libstdc++.so.5: version `GLIBCPP_3.2' not found (required by /home/bf2/bf2/bin/ia-32/bf2)

P.S. Лучше сначала определите используемые библиотеки командой
readelf -d программа | grep Shared

А что за команда readelf ? не могу найти. Какой то пакет нужно доустановить?
« Последнее редактирование: 20.01.2011 09:58:19 от vak »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
$ rpm -qf $(whereis readelf)
ошибка: файл readelf:: Нет такого файла или каталога
binutils-2.20.51.0.12-alt3
binutils-2.20.51.0.12-alt3

Оффлайн vak

  • Участник
  • *
  • Сообщений: 70
А вот с этой ошибкой что то можно сделать? (пока так и осталась)

[bf2@game1 bf2]$ ./run_bf2
/var/srv/home/bf2/bf2/bin/ia-32/bf2: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
[bf2@game1 bf2]$

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
А вот с этой ошибкой что то можно сделать? (пока так и осталась)
Поставить в Hasher старую версию glibc (из 4.1?)
Андрей Черепанов (cas@)

Оффлайн vak

  • Участник
  • *
  • Сообщений: 70
А вот с этой ошибкой что то можно сделать? (пока так и осталась)
Поставить в Hasher старую версию glibc (из 4.1?)

Доустановил...
[root@game1 vak]# apt-get install i586-libstdc++3.3

Вроде ещё одна игрушка заработала.

Оффлайн vak

  • Участник
  • *
  • Сообщений: 70
Опять не хватает...
./bf2: error while loading shared libraries: libdice_py.so: cannot open shared object file: No such file or directory
Пытаюсь найти...
[root@game1 etc]# /sbin/ldconfig -p |grep libdice_py.so
[root@game1 etc]#

Подскажите, как определить название пакета в этом случае?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
libdice_py.so - это какой-то модуль Питона.
Надо выяснить какой и установить.


PS Если приложение написано на питоне, то он в Linux должно работать.