【发布时间】:2021-02-14 14:16:35
【问题描述】:
我将在这里受到打击,因为我正在使用我不完全理解并且没有花时间这样做的工具。此时我只想快速从我的工作中删除不必要的步骤/依赖项。
我在开发过程中使用AddressSanitizer 在我的 C 代码中查找段错误和其他问题的原因。为此,我将 -fsanitize=address 添加到 Makefile 中的 CFLAGS 列表中。
现在,在解决了所有此类问题后,如果我从编译中删除此标志,我将无法再编译我的代码,并且会出现许多与此问题中描述的错误非常相似的错误...
How to use AddressSanitizer with GCC?
~/xxx/util.c:20: 未定义引用
__asan_option_detect_stack_use_after_return' /usr/bin/ld: ~/xxx/util.c:20: undefined reference to__asan_stack_malloc_2' usr/bin/ld: /xxx/util.c:23: 未定义引用__asan_report_store8' /usr/bin/ld: /xxx/util.c:40: undefined reference to__asan_report_load8' /usr/bin/ld: /xxx/util.c:45:未定义的引用 到 `__asan_report_load8' /usr/bin/ld: 以此类推。
不同的是我只想正常编译我的代码。在那个问题中,他们建议在链接/编译步骤中添加一个标志 -lasan。这似乎不会帮助我停止使用-fsanitize,尽管我可能是错的。显然,这里的链接步骤有问题。感觉好像我在某个地方包含了一个我忘记的依赖项,但我不记得这样做了。
我错过了什么?可能是显而易见的事情。另外,如果我需要提供有关我的编译步骤的更多信息,请告诉我。
【问题讨论】:
标签: c gcc address-sanitizer