Похоже, что создание двоичного файла CockroachDB не работает на всех машинах x86

#makefile #build #x86 #cockroachdb

#makefile #сборка #x86 #cockroachdb

Вопрос:

Я создал двоичный файл CockroachDB, используя «make build», и результат для x86 оказался не переносимым на другие машины x86, кроме моей машины сборки, из-за ошибки, связанной с набором инструкций AVX2. Кто-нибудь знает, выполняет ли «make build» сборку, которая не оптимизирована для процессора машины сборки? или использование «make buildoss» решит проблему? Если нет, кто-нибудь знает о флагах сборки, которые можно передать, чтобы предотвратить использование «расширенных» наборов инструкций во время сборки, так что полученный двоичный файл может выполняться на любом «универсальном» процессоре x86? Как настройки, доступные здесь, в gcc? https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html

Ответ №1:

Создание непереносимых сборок является побочным эффектом того, как создается RocksDB make build (мы не смогли указать PORTABLE=1 ). Этого можно избежать, создав двоичный файл «release». Официальные двоичные файлы выпуска CockroachDB создаются с использованием Docker, с помощью build/builder.sh mkrelease которого я бы рекомендовал создавать двоичный файл, если вы используете его для чего-то серьезного. Эта проблема была исправлена в ветке release-20.2 по состоянию на https://github.com/cockroachdb/cockroach/pull/59017 .