J'essaye de construire mon projet avec
g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer
mais obtenez beaucoup d'erreurs comme:
/home/user/libs/opencv/include/opencv2/core/mat.hpp:715: undefined reference to `__asan_report_load8'
Comment compiler un projet avec le support AddressSanitize?
Ma version de gcc est 4.8.4.
Vous devez ajouter le commutateur -lasan
sur votre ligne de commande compile/link pour lier la bonne bibliothèque.
Vous devez ajouter -fsanitize=address
Aux drapeaux du compilateur (CFLAGS
, CXXFLAGS
) et aux drapeaux de l'éditeur de liens (LDFLAGS
). Vous l'avez probablement ajouté à vos indicateurs de compilateur uniquement.
Notez que l’utilisation explicite de l’option -lasan
A été largement découragée par les développeurs ASan (par exemple, ici ), car elle omet d’autres drapeaux importants de l’éditeur de liens. La seule façon recommandée de créer un lien consiste à utiliser -fsanitize=address
.
En guise de remarque, pour vérifier plus en profondeur les indicateurs de vérification, consultez FAQ Asan (recherchez "des diagnostics plus agressifs").
Assurez-vous que libasan est installé. Par exemple, dans Fedora:
dnf install libasan libasan-static