Перехват SOAP-сообщений от и до веб-службы на клиенте

Очень возможно иметь несколько версий glibc в одной и той же системе (мы делаем это каждый день).

Однако вам нужно знать, что glibc состоит из множества частей (200 + разделяемых библиотек) которые все должны совпадать. Одна из частей - ld-linux.so.2, а должна соответствовать libc.so.6, или вы увидите ошибки, которые видите.

Абсолютный путь к ld-linux.so.2 жестко закодирован в исполняемый файл во время соединения и не может быть легко изменен после завершения связи.

Чтобы создать исполняемый файл, который будет работать с новым glibc , сделайте следующее:

g++ main.o -o myapp ... \
   -Wl,--rpath=/path/to/newglibc \
   -Wl,--dynamic-linker=/path/to/newglibc/ld-linux.so.2

Опция компоновщика -rpath сделает загрузчик времени выполнения для поиска библиотек в /path/to/newglibc (так что вам не нужно было бы устанавливать LD_LIBRARY_PATH перед запуском), и параметр -dynamic-linker будет «испечь» путь, чтобы исправить ld-linux.so.2 в приложении.

Если вы не можете повторно подключить приложение myapp (например, потому что это сторонний двоичный файл), не все потеряно, но становится сложнее. Одно из решений - установить для него подходящую среду chroot. Другая возможность - использовать rtldi и двоичный редактор .

23
задан John Saunders 8 December 2012 в 23:12
поделиться