Программа динамически загружает liba.so с помощью dlopen(), затем разрешает и вызывает из него функцию func1() через dlsym().
Я создал libb.so, который переопределяет функцию с тем же именем func1(). Мой вопрос: можно ли использовать переменную среды LD_PRELOAD, чтобы заставить программу использовать func1() из libb.so вместо исходной func1() из liba.so? Если это невозможно по умолчанию, какие изменения (в программе, liba.so или libb.so) потребуются, чтобы LD_PRELOAD работал в этом случае?
На самом деле я написал libb.so вместе с функцией func1(). После этого я попытался подключить исходную функцию func1(), используя переменную среды LD_PRELOAD. Однако ничего не произошло — мой крючок не подействовал. Я подозреваю, что LD_PRELOAD не может перехватывать функции, разрешенные с помощью dlsym(). Интересно, верно ли это предположение.
У меня есть сценарий, в котором: [list] [*]Программа динамически загружает liba.so с помощью dlopen(), затем разрешает и вызывает из него функцию func1() через dlsym().
[*]Я создал libb.so, который переопределяет [b]функцию с тем же именем[/b] func1(). [b]Мой вопрос[/b]: можно ли использовать переменную среды LD_PRELOAD, чтобы заставить программу использовать func1() из libb.so вместо исходной func1() из liba.so? Если это невозможно по умолчанию, какие изменения (в программе, liba.so или libb.so) потребуются, чтобы LD_PRELOAD работал в этом случае?
[/list] На самом деле я написал libb.so вместе с функцией func1(). После этого я попытался подключить исходную функцию func1(), используя переменную среды LD_PRELOAD. Однако ничего не произошло — мой крючок не подействовал. Я подозреваю, что LD_PRELOAD не может перехватывать функции, разрешенные с помощью dlsym(). Интересно, верно ли это предположение.