LINUX.ORG.RU
ФорумAdmin

libc5 support


0

0

Такая проблема: есть файлы ld-linux.so.1 и libc.so.5, но НЕТУ РУТА. Как запустить из-под простого юзера файл, динамически слинкованный с libc.so.5 ?

★★★★★

пример: либы лежат в ~user/lib
export LD_LIBRARY_PATH=~user/lib;
chmod +x ~/usr/lib/ld-linux.so.1;
~/user/lib/ld-linux.so.1 myprog

в общем - либу можно подсунуть через LD_LIBRARY_PATH, а путь к
ld-linux пробит в бинарнике намертво, можешь сделать
strings my_prog | grep ld | grep linux
и увидишь, где она его хочет найти.
Наверное, попрыгав с objcopy, можно это заменить, или напрямую
отредактировать - если длина путей не отличается. Но можно
воспользоваться тем, что ld-linux - это не либа, а бинарник,
загружающий и запускающий программу

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

Математические рассчёты на кластерах

2grustnoe

а чего так сложно то ? ;)

man ld.so

все помещается в одну строчку без танцев с бубном ;)

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

Проблема в том, что ld-linux.so.1 почему-то выдает segfault.

Я пробовал так: на машинке с установленной libc5 я копировал установленный в /lib ld-linux.so.1, экспортировал LD_LIBRARY_PATH=/lib:/usr/i486-linux-libc5/lib (у меня там libc5 живет) и запускал прогу, слинкованную с libc5, как ./ld-linux.so.1 ./myproga

Segmentation fault!

А просто обычным способом - все работает.

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