You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Conan2中使用编译器Sanitizer(以Address Sanitizer为例)

在Conan 2中配置Address Sanitizer(Emscripten/WASM环境)

问题背景

尝试在Conan 2中为Emscripten/WASM环境配置Address Sanitizer,但参考Conan 1的方案完全失效。先后尝试两个配置文件均失败:
第一个配置文件:

include(default)

[settings]
arch=wasm
os=Emscripten

compiler.sanitizer=Address

[tool_requires]
*: emsdk/3.1.44

[env]
CFLAGS=-fsanitize=address
CXXFLAGS=-fsanitize=address
LDFLAGS=-fsanitize=address

第二个配置文件:

[compiler_flags]
sanitizer=Address

Conan提示env或compiler_flags是未识别的段。

解决方案

Conan 2对配置文件结构做了大幅调整,移除了Conan 1中直接用env设置编译标志的方式,也不存在compiler_flags段。正确做法是通过[conf]段的tools.build系列配置项传递编译/链接参数:

正确的配置文件示例

include(default)

[settings]
arch=wasm
os=Emscripten

[tool_requires]
*: emsdk/3.1.44

[conf]
tools.build:cflags=["-fsanitize=address"]
tools.build:cxxflags=["-fsanitize=address"]
tools.build:ldflags=["-fsanitize=address"]

关键说明

  • compiler.sanitizer=Address这个设置项在Emscripten的Conan配置中可能未做映射,直接通过tools.build系列参数传递-fsanitize=address更可靠
  • 确认使用的emsdk版本支持Address Sanitizer,3.1.44版本完全支持该特性
  • 也可以通过命令行临时指定配置,无需修改配置文件:
    conan install . -s os=Emscripten -s arch=wasm -t emsdk/3.1.44 -c tools.build:cflags="-fsanitize=address" -c tools.build:cxxflags="-fsanitize=address" -c tools.build:ldflags="-fsanitize=address"
    

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:05:17