问题描述
我使用“make build”构建了 cockroachDB 二进制文件,由于与 AVX2 指令集相关的错误,x86 的结果似乎不能移植到我的构建机器之外的其他 x86 机器上。有谁知道“make build”是否执行未针对构建机器的处理器进行优化的构建?或者使用“make buildoss”会解决问题吗? 如果没有,有没有人知道可以传递的构建标志以防止在构建过程中使用“高级”指令集,以便生成的二进制文件可以在任何“通用”x86 处理器上运行?喜欢 gcc 中可用的设置? https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
解决方法
不可移植构建的创建是 make build
构建 RocksDB 方式的副作用(我们未能指定 PORTABLE=1
)。可以通过构建“发布”二进制文件来避免。官方的 CockroachDB 发布二进制文件是使用 Docker 构建的,使用 build/builder.sh mkrelease
如果您将其用于任何严肃的事情,我建议您构建二进制文件。自 https://github.com/cockroachdb/cockroach/pull/59017 起,此问题已在 release-20.2 分支上得到修复。