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

MacOS BigSur下编译FlatBuffer v1.3.0至v1.12.1版本flatc编译器报错咨询

结论

你遇到的编译报错和make工具版本无关,不需要更换make版本,问题根源是FlatBuffer v1.12.1及更早版本的代码未兼容MacOS自带的高版本Clang编译器的新语法检查规则,FlatBuffer v2.0.0修复了对应代码问题所以可以正常编译。

报错原因

从报错日志可以看到触发错误的编译参数是-Werror,-Wdeprecated-copy:

  • 这个规则是高版本Clang新增的检查:如果C++类自定义了拷贝赋值运算符,就不会隐式生成拷贝构造函数,隐式调用的场景会被判定为问题
  • FlatBuffer v1.12.1及更早版本的TableKeyComparator类只声明了拷贝赋值运算符,没有显式定义拷贝构造函数,触发了该检查,且项目默认开启了-Werror将警告转为编译错误

解决方法

方案一:适配老版本FlatBuffer编译(无需升级版本)

在执行cmake命令时,添加参数关闭对应警告的报错规则即可,完整步骤如下:

  1. 进入flatbuffers源码目录,清理之前生成的编译缓存
rm -rf CMakeCache.txt CMakeFiles/
  1. 执行带额外编译参数的cmake命令
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Wno-error=deprecated-copy -Wno-deprecated-copy"
  1. 正常执行make即可编译成功
make -j$(sysctl -n hw.ncpu)

方案二:升级FlatBuffer版本

如果业务没有强依赖老版本FlatBuffer,直接使用v2.0.0及以上版本的源码即可原生兼容高版本Clang编译,无需额外修改参数。

内容的提问来源于stack exchange,提问作者Sujan Davangere Sunil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:27:05