Ответ 1
Вам нужно добавить коммутатор -lasan
в свою командную строку компиляции/ссылки, чтобы связать нужную библиотеку.
Я пытаюсь построить свой проект с
g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer
но получите много ошибок, таких как:
/home/user/libs/opencv/include/opencv2/core/mat.hpp:715: undefined reference to '__asan_report_load8'
Как скомпилировать проект с поддержкой AddressSanitize?
Моя версия gcc 4.8.4.
Вам нужно добавить коммутатор -lasan
в свою командную строку компиляции/ссылки, чтобы связать нужную библиотеку.
Вам необходимо добавить -fsanitize=address
как к флагам компилятора (CFLAGS
, CXXFLAGS
), так и к флагам компоновщика (LDFLAGS
). Вы, вероятно, добавили его только к своим флагам компилятора.
Обратите внимание, что использование явной связи библиотеки -lasan
широко не поощряется разработчиками ASan (например, здесь), поскольку в ней отсутствуют некоторые другие важные параметры. Единственный рекомендуемый способ ссылки - использовать -fsanitize=address
.
Как примечание, для более агрессивных флагов проверки проверьте Asan FAQ.
Убедитесь, что у вас установлен libasan. Например, в Fedora:
dnf install libasan libasan-static