构建带MemorySanitizer的libcxx时LLVM报错:libcxx非已知项目求解决
修复MemorySanitizer误报未初始化值时的CMake配置错误
为解决MemorySanitizer误报未初始化值的问题,我尝试编译带MemoryWithOrigins sanitizer的libcxx和libcxxabi,执行了以下CMake命令:
cmake -GNinja ../llvm \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi" \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ -DLLVM_USE_SANITIZER=MemoryWithOrigins
但遇到错误:
libcxxisnt a known project, did you mean to enable it as a runtimeLLVM_ENABLE_RUNTIMES
修复方法
新版LLVM架构调整后,libcxx、libcxxabi这类运行时库已从LLVM_ENABLE_PROJECTS选项迁移到LLVM_ENABLE_RUNTIMES下,只需修改CMake参数即可解决:
cmake -GNinja ../llvm \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ -DLLVM_USE_SANITIZER=MemoryWithOrigins
替换参数后,CMake就能正确识别libcxx和libcxxabi项目,继续完成带MemorySanitizer的编译流程,编译完成后使用这套库运行程序即可解决误报问题。
内容的提问来源于stack exchange,提问作者JacobNowitsky
相关产品推荐
相关产品推荐

