Состав персонажей
big-old-app
связано со старой версией glibc
, скажем glibc-2.12
. Я ничего не могу сделать, чтобы изменить это.
cute-new-addon.o
связан с более новой версией, glibc-2.23
. Этот glibc-2.23
находится в нестандартном пути (потому что у меня нет полномочий sudo).
История
Я хочу использовать cute-new-addon.o
внутри big-old-app
. Обычно я пишу скрипт для выполнения big-old-app
, который затем вызывает cute-new-addon.o
для выполнения своих трюков. Из командной строки это будет выглядеть так:
$ big-old-app script.txt
Однако, когда я это сделаю, big-old-app
будет жаловаться, что cute-new-addon.o
не может найти glibc-2.23
. Это понятно, потому что я не указал никаких стандартных путей. Что если я сделаю:
$ LD_LIBRARY_PATH=/path/to/mylibs:$LD_LIBRARY_PATH big-old-app script.txt
Это сегфолты! (
Я думаю, это потому, что big-old-app
ссылается на более новый mylibc.so.6
. При этом реализации больше не являются тем, к чему привык big-old-app
, поэтому он вызывает ошибки.
Вопрос
Что касается script.txt
, я не думаю, что у меня есть возможность указать более новый mylibc.so.6
перед вызовом cute-new-addon.o
. big-old-app
и cute-new-addon.o
тесно связаны между собой, и я не знаю, когда кому-либо из них понадобится соответствующий glibc
.
И да, cute-new-addon.o
rpath
указывает на /path/to/mylibs
, и я могу подтвердить через ldd
, что все библиотеки, которые ему нужны, он ищет в /path/to/mylibs
.
Можно ли использовать LD_PRELOAD
для загрузки двух разных версий glibc
? И пусть big-old-app
и cute-new-addon.o
ищут то, что им нужно, как им угодно?