Почему использование LD_PRELOAD не рекомендуется?

Я наткнулся на этот совет на Google tcmalloc страница документации.

Вы можете использовать TCMalloc в приложениях, которые сами не компилировали, используя LD_PRELOAD:

$ LD_PRELOAD="/usr/lib/libtcmalloc.so"

LD_PRELOAD сложно, и мы не обязательно рекомендуем этот режим использования.

Почему они не рекомендуют LD_PRELOAD? Что-то не так с этим? Является ли нормальное связывание более надежным? Как?

1

Решение

В дополнение к ysdxответ, значение LD_PRELOAD также будет игнорироваться (по уважительным причинам) для setuid()под ред.

В зависимости от варианта использования это может быть нежелательно. Например, вы не можете написать оболочку сценария оболочки, которая экспортирует LD_PRELOAD и затем выполняет фактическую программу.

2

Другие решения

Когда используешь LD_PRELOAD, tcmalloc Реализация будет использоваться для любого дочернего процесса, который может быть не тем, что вы хотите.

3

По вопросам рекламы [email protected]