Как скомпилировать Clang с дезинфицирующими средствами - PullRequest
0 голосов
/ 02 июля 2019

Я просто скомпилировал Clang, используя CMake , а затем попытался запустить дезинфицирующее средство (с clang -fsanitize=address), но получил:

/usr/bin/ld: cannot find <CLANG_DIR>/9.0.0/lib/linux/libclang_rt.asan-x86_64.a:
  No such file or directory

Затем я перешел к "Какдля создания "Address sanitizer page , но там просто написано:

Сборка LLVM / Clang с CMake .

Что возвращает меня обратнона первую страницу.Единственное упоминание «sanitize» в любом месте на странице:

LLVM_USE_SANITIZER: STRING

Определите дезинфицирующее средство, используемое для создания двоичных файлов и тестов LLVM.Возможные значения: Адрес, Память, MemoryWithOrigins, Не определено, Поток и Адрес; Не определено.По умолчанию используется пустая строка.

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

Итак, как на самом деле можно создать дезинфицирующие средстваи сделать их доступными для Clang?

1 Ответ

1 голос
/ 02 июля 2019

Библиотека времени выполнения, которая реализует обратные вызовы Asan, находится в репозитории compiler-rt , так что вам также нужно будет ее собрать. Один из простых способов добиться этого - клонировать compiler-rt в llvm/projects перед запуском cmake.

...