Кросс-компиляция x86_64 в системе i686 в Ubuntu с помощью distcc - PullRequest
5 голосов
/ 12 января 2011

Я пытаюсь настроить небольшой кластер сборки дома, используя distcc.Есть две системы x64 и 1 система i686.Все системы работают под управлением Ubuntu 10.10 и обновлены.Система, которая инициирует сборку - это x64.Distcc прекрасно работает между двумя системами x64, но все задачи сборки, отправленные в систему i686, не выполняются.

Пока:

  • Я установил пакет multilib для g ++ в этой системе.Я могу выполнить кросс-компиляцию в x64 локально, используя g++ -m64
  • Изменила ссылку в /usr/lib/distcc/g++, чтобы она указала на скрипт, который explicity устанавливает параметр -m64.

Есть предложения?

1 Ответ

5 голосов
/ 13 января 2011

Попытка этого снова после дополнительного исследования:

GCC имеет страницу , описывающую опции i386 и x86-64 . Флаг -m64 говорит о необходимости создания 64-битного кода, но вы также можете указать тип процессора с помощью -march=i686 или -march=k8 или аналогичного, чтобы использовать правильный набор инструкций.

Поскольку distcc отправляет флаги командной строки GCC, попробуйте добавить их в локальную команду distcc и пропустить удаленный скрипт для установки флагов.

Если вы тестируете флаги архитектуры на своем локальном компьютере с архитектурой x64 без distcc, просто g ++, то при использовании distcc вы должны получить правильные двоичные файлы.

...