LINUX.ORG.RU

запустить приложение с новым glibc

 


0

3

Вечер добрый.

Скажите пожалуйста, как мне запустить приложение, которое требует более новую версию glibc. новую glibc я собрал. теперь пытаюсь запустить приложение с новым glibc и выпадает ошибка:

LD_PRELOAD="/new_glibc/lib/ld-2.16.so /new_glibc/lib/libc.so" ./app                               
ERROR: ld.so: object '/new_glibc/lib/libc.so' from LD_PRELOAD cannot be preloaded: ignored.
./app: /lib/libc.so.6: version `GLIBC_2.11' not found (required by ./app)
LD_LIBRARY_PATH тоже не спасает



Последнее исправление: kabanchik (всего исправлений: 2)

Тебе поможет только установка в систему. Я воспользовался SRPM-кой, например для Steam я скомпилировал новый glibc в виде RPM-пакетов: http://download.opensuse.org/repositories/home:/Zenitur:/branches:/openSUSE:/... Если у тебя Debian то у тебя всё ещё проще: подключить Stable и установить пакет с glibc оттуда.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

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

kabanchik
() автор топика
Ответ на: комментарий от anonymous

anonymous, спасибо!!!

теперь Segmentation fault, хотя приложение точно рабочее. куда копать? это как то связано с новой glibc?

kabanchik
() автор топика
Ответ на: комментарий от kabanchik

Просто воспользуйся пакетом. У тебя RPM или DEB? Установи, попользуйся, а потом верни старую версию. А если всё будет работать хорошо, то оставь новый glibc. Вот например у меня openSUSE 11.4 2011 года выпуска, я обновил glibc для Steam и играю.

ZenitharChampion ★★★★★
()

patchelf --set-interpreter /.../lib/ld-linux.so.2 --set-rpath /.../lib

AptGet ★★★
()
Ответ на: комментарий от kabanchik

помог примерно понять, что происходит:

LD_DEBUG=libs LD_PRELOAD=/new_glibc/lib/ld-2.16.so /new_glibc/lib/libc.so ./app
      1608:	find library=libm.so.6 [0]; searching
      1608:	 search cache=/etc/ld.so.cache
      1608:	  trying file=/lib/libm.so.6
      1608:	
      1608:	find library=libc.so.6 [0]; searching
      1608:	 search cache=/etc/ld.so.cache
      1608:	  trying file=/lib/libc.so.6
      1608:	
      1608:	
      1608:	calling init: /lib/libc.so.6
тут видимо путаница происходит с симлинками /lib/libc.so.6

как то можно это исправить?

kabanchik
() автор топика
Ответ на: комментарий от kabanchik

почему

"trying file=/lib/libc.so.6"[\code]?
LD_PRELOAD явно указывается /new_glibc/lib/libc.so !!!
Или LD_PRELOAD не подгружает /new_glibc/lib/libc.so

plusPlus
()
Ответ на: комментарий от kabanchik

trying file=/lib/libm.so.6

libm тоже придётся подменять, ибо:

$ ldd /usr/lib64/libm.so
        linux-vdso.so.1 =>  (0x00007fff3b1ff000)
        libc.so.6 => /lib64/libc.so.6 (0x00000030d7a00000)
        /lib64/ld-linux-x86-64.so.2 (0x00000030d7200000)
cdslow ★★
()
Ответ на: комментарий от false

Ну вообще оно вроде бы вполне себе обратно совместимое и проблем быть не должно.

xeiph
()
Ответ на: комментарий от cdslow

libm тоже придётся

и не только. Надо ВСЁ менять.

Ну вообще оно вроде бы вполне себе обратно совместимое

не в ту сторону совместимое. Можно libm поменять на новую со старой glibc, но новая glibc со старой libm работать не обязана. Не, попробовать конечно можно... Особенно если новая glibc собрана со старой libm.

Для ТСа, почему вы не можете систему обновить? Это самый простой путь.

emulek
()
Ответ на: комментарий от ZenitharChampion

Тебе поможет только установка в систему.

Плохой совет.

annulen ★★★★★
()

Попробуй вместо

LD_PRELOAD="/new_glibc/lib/ld-2.16.so /new_glibc/lib/libc.so" ./app
сделать
LD_PRELOAD=/new_glibc/lib/libc.so /new_glibc/lib/ld-2.16.so ./app

annulen ★★★★★
()
Ответ на: комментарий от kabanchik

LD_PRELOAD='/new_glibc/lib/ld-linux.so.3'

Выглядит бредовенько, т.к. ld-linux.so.3 - это приложение (загрузчик, если быть конкретнее), а не библиотека.

annulen ★★★★★
()

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

ubuntuawp ★★
()
Ответ на: комментарий от annulen

дык добавь, че :-)
имхо, моя бубунта (lucid lynx 10.04) по дефолту все грузит (eglibc) - может там какие-то магические патчи
Debian Sid так же

ubuntuawp ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.