Библиотеки условной загрузки в зависимости от инструментария

#linker #loader #address-sanitizer

#компоновщик #загрузчик #адрес-дезинфицирующее средство

Вопрос:

Допустим, у меня есть двоичный файл foo и bar . Они оба ссылаются на библиотеку baz. Я хочу включить ASAN только для процесса foo, но не для панели процессов. Я создаю две версии baz, одну с инструментарием ASAN (упакуйте ее в /pkg/asan/lib/), а другую без asan (упакуйте ее в /pkg / lib).

Я хочу, чтобы процесс foo был связан / загружен в libbaz из /pkg/asan/lib/ , но хочу, чтобы панель процессов связывала / загружала библиотеку из /pkg /lib.

В любом случае во время компиляции я могу указать foo, чтобы сначала проверить, присутствует ли библиотека в /pkg/asan/lib , если нет, перейдите по ссылке с библиотекой из /pkg /lib.

Ответ №1:

В любом случае во время компиляции я могу указать foo, чтобы сначала проверить, присутствует ли библиотека в /pkg/asan/lib , если нет, перейдите по ссылке с библиотекой из /pkg /lib.

Конечно: при связывании foo с AddressSanitizer добавьте -L/pkg/asan/lib -Wl,-rpath=/pkg/asan/lib опции.