tikv编译报错-jemalloc

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
tikv release-4.0
【问题描述】
编译环境:


编译tikv-server默认参数(make release或者cargo build --release --no-default-features --features " jemalloc mem-profiling portable sse protobuf-codec")报错,看错误信息是jemalloc.h宏定义的问题,另外在测试环境编译是没问题的,但两边生成的jemalloc.h内容不一样。

正式编译环境去掉jemalloc特性或者代码注释掉几个报错误的宏定义也能编译过。

主要错误信息:

tikv-error.txt (507.9 KB)

完整编译信息在上传文件中。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

正式编译环境是在 Windows 上编译的么?
目前 TiKV 不支持在 Windows 环境下编译,因为 tikv 代码中有调用到一些 unix api ,所以暂时还不支持。

不是windows哦,是linux,CentOS环境

那测试环境和正式环境的 jemalloc 版本是一致的么?
测试环境和正式环境有哪些区别?

是一样的,编译好像不是用系统的jemalloc,jemalloc.h像是根据什么规则生成出来的

按照测试环境安装会有同样的问题吗?

测试环境编译是好的,试了好几个环境,就那个编译环境生成的jemalloc.h里面有C/C++不支持的宏定义,奇奇怪怪的,不知道哪里导入的这些信息。

应该是生成public_symbols.txt的时候检查到问题,写了句”No such file or directory“进去,后面又把这句生成到头文件里面,于是就造成不正常的宏定义,不过还没看出是哪里检查有问题。。。

最终发现是编译环境/dev/null设备被改成了普通文件,编译的configure过程中会通过cp命令生成public_symbols.txt文件,于是就出现了前面的问题。。。。:triumph:

:flushed:/dev/null 为啥需要被改成普通文件?误操作导致的?

应该是别人误操作了,现在编译没问题了

好吧,能排查这个问题原因也是牛逼:+1:

刚学习tikv,后续还需要社区大佬们多多指教:handshake:

:handshake::handshake: