LINUX.ORG.RU

перелинковать бинарник


0

1

Суть такова:

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

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

нельзя ли, имея этот бинарник и собрав все нужные ему библиотеки (но не имея исходников), соорудить статически слинкованный бинарник которому никакие зависимости не требуются?


Положи нужные ему библиотеки в какую-нибудь директорию и научи бинарь их там искать (LD_LIBRARY_PATH)

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

ну, это теоретически возможно. Я конкретных шагов не знаю, но идея простая (хоть и дурацкая):

пишешь самораспаковывающийся bash-скриптик, который создаёт временную диру, в неё кидает динамически слинкованный бинарь и нужные либы, и запускает его с нужным LD_PRELOAD. Так же известно, что есть способ из bash-скрипта сделать бинарник - его тоже используем.

Только стоит ли огород городить? Зачем тебе именно статический бинарь?

gorilych ★★
()

ну про LD_LIBRARY_PATH все понятно (и работает)

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

впрочем архив библиотек + скрипт-запускалку тоже несложно

mkp
() автор топика

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

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

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

вариант с LD_LIBRARY_PATH более удачен по сравнению с перелинковкой в (псевдо)статику

Sylvia ★★★★★
()
#!/bin/sh

# launcher

LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
./my_prog.bin
$ mv my_prog my_prog.bin
$ mv launcher.sh my_prog
DELIRIUM ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.