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

未添加-fno-rtti编译选项却出现typeid使用错误,求解决方案

解决编译LLVM Gold插件时Protobuf RTTI错误

问题原因

LLVM默认编译配置会自动添加-fno-rtti选项禁用运行时类型信息(RTTI),但你使用的Protobuf库代码中调用了typeid,该特性必须依赖RTTI才能正常编译,因此触发冲突错误。

解决方案

在配置LLVM的CMake命令中,显式开启RTTI支持:

  1. 清理之前的build目录(如果已执行过cmake):
cd build
rm -rf ./*
  1. 重新执行cmake命令,添加-DLLVM_ENABLE_RTTI=ON参数:
cmake ../llvm -DLLVM_BINUTILS_INCDIR="path/to/binutils/include" -DLLVM_ENABLE_RTTI=ON
  1. 重新编译:
make -j$(nproc)

补充说明

开启RTTI会让LLVM编译后的二进制文件略有增大,但这是兼容Protobuf这类依赖RTTI库的必要操作。如果后续遇到其他编译问题,可以检查是否有其他第三方库的编译选项需要同步调整,但此方案通常能解决当前的RTTI冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:45:00