使用 -fsanitize 进行编译时,我是否必须使用它来编译每个目标?
我有一些不受它支持的目标(汇编和 C 目标)。
主要可执行文件是受支持的 C++ 文件。
fsanitize 有效吗?或者我需要删除不受支持的文件吗?或者它只会工作用该标志编译的部分?
最佳答案
文档告诉我们,-fsanitize
启用了 AddressSanitizer,并提供了其主页的链接。这样,我们就可以直接从 the FAQ 得到答案。 :
Q: I've built my main executable with ASan. Do I also need to build shared libraries?
A: ASan will work even if you rebuild just part of your program. But you'll have to rebuild all components to detect all errors.
虽然您没有构建共享库,但此答案表明并非链接到可执行文件的每个对象都需要启用 AddressSanitizer。
关于c++ - 在具有不受支持的组件的目标上使用 -fsanitize 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285910/