尝试将地址清理程序与GCC一起使用时出现“未定义引用”错误

67up9zun  于 2023-02-23  发布在  其他
关注(0)|答案(3)|浏览(155)

我正试着用

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。

lb3vh1jj

lb3vh1jj1#

您需要将-fsanitize=address添加到编译器标志(CFLAGSCXXFLAGS)和链接器标志(LDFLAGS)中。
请注意,ASan开发人员普遍不鼓励使用显式-lasan选项(例如here),因为它会丢失一些其他重要的链接器标志。唯一推荐的链接方式是使用-fsanitize=address
作为附带说明,有关更积极的验证标志,请查看Asan FAQ(查找“更积极的诊断”)。

laximzn5

laximzn52#

确保你已经安装了libasan,例如,在Fedora中:
dnf install libasan libasan-static

gkl3eglg

gkl3eglg3#

您需要将开关-lasan-fsanitize=address添加到 * compile * 和 * link命令行中,以链接正确的库。
注:原始答案-lasan已过时,不应使用,根据评论

相关问题