【 TiDB 使用环境 `】测试环境 ,clang(13.0.0)g++(11.3.0)
【 TiDB 版本】6.1.0
【遇到的问题】make过程编译失败
google有些解决办法是说要加#include ,但是仓库的版本都是没有动过的
(为什么要限制,新用户只能放一个图片…)
【 TiDB 使用环境 `】测试环境 ,clang(13.0.0)g++(11.3.0)
【 TiDB 版本】6.1.0
【遇到的问题】make过程编译失败
google有些解决办法是说要加#include ,但是仓库的版本都是没有动过的
(为什么要限制,新用户只能放一个图片…)
初步看起来是编译器没有正确包含相关头文件。预期 std::numeric_limits
所在的是文件 limits
。
在编译目录下的 compile_commands.json 文件中找到 histogram.cc 对应的 command,例如 "command": "/usr/bin/clang++-13 -DTIFLASH_ENABLE_AVX512_SUPPORT ... -std=c++11 ...
。找到编译器路径(测试环境是 /usr/bin/clang++-13
)和 c++ 版本参数 -std=c++11
。
用该编译器测试下基本流程是否报错
echo "#include <cstdio>" > /tmp/x.cpp
echo "#include <limits>" >> /tmp/x.cpp
echo 'int main() { auto _ = std::numeric_limits<int>::max(); std::printf("%ld\\n", __cplusplus); return 0;}' >> /tmp/x.cpp
/usr/bin/clang++-13 /tmp/x.cpp -o /tmp/x.o -std=c++11 && /tmp/x.o
预期是正常编译并输出
201103
建议社区内英文交流以便于所有开发者检索。
It is recommended to communicate in English so that all developers can search it.
TiFlash 官方支持 gcc 只到 7.5,建议切换到 llvm 工具链。有 2 种方式:
which cc
,并修改 cc 软链到 clang 相关CC=clang CXX=clang++ cmake ....
然后 make ...
。