2017-02-17 33 views
0

Я хочу, чтобы моя установка Jenkins (в Windows) использовала подчиненные машины с distcc для сокращения времени компиляции.Кросс-компиляция на окнах с cygwin, distcc и cmake

Я использую Cygwin на ведомых устройствах для запуска distcc, но у меня возникают проблемы во время конфигурации, то есть «./configure». Конфигурация проверяет компилятор, но поскольку я перекрестно компилирую для встроенного устройства, используя CMake для генерации файлов сборки, я полагаю, мне не нужно указывать всю эту информацию в distcc.

Я попытался установить его в явной форме в любом случае с помощью:

export CC=path/to/compiler

однако, это приводит к ошибке:

$ ./configure --prefix=/usr/local 
checking build system type... x86_64-unknown-cygwin 
checking host system type... x86_64-unknown-cygwin 
checking for gcc... path/to/compiler.exe 
checking whether the C compiler works... yes 
checking for C compiler default output file name... conftest.elf 
checking for suffix of executables... .elf 
checking whether we are cross compiling... configure: error: in `/distcc-3.2rc1': 
configure: error: cannot run C compiled programs. 
If you meant to cross compile, use `--host'. 
See `config.log' for more details. 

Я считаю, что --build настроен правильно, как я буду работать DistCC через Cygwin, но значения для других переменных неясны.

У кого-то был успех с такого рода настройками? Любые другие настройки, которые у меня отсутствуют или у вас есть ресурсы для подсказок/подсказок? Кажется, что не существует способа настройки на компьютерах Windows.

+0

выглядит на config.log, чтобы увидеть причину ошибки. – matzeri

+0

@matzeri './conftest.elf: невозможно выполнить двоичный файл: формат Exec'. Конфигурация проверяет, что файл .elf может быть запущен. Как правильно сказать distcc, что я перекрестно компилирую? – ichiwahato

ответ

0

Обычно от ./configure --help вы можете увидеть возможность информировать систему сборки, которую требуется составить программу, которая будет работать на другой системе (HOST)

System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]

Смотрите также для Automake:

https://www.gnu.org/software/automake/manual/html_node/Cross_002dCompilation.html

+0

Спасибо за ответ. Не могли бы вы уточнить, имеет ли значение HOST: a.) Тип системы, на которой будет выполняться distcc, или b.) Тип системы, с которой будет работать код, составленный из моего указанного компилятора? (т. е. мой микроконтроллер) Я все еще утверждаю, что мне не нужно указывать эти параметры компилятора, так как должно быть, что CMake полностью абстрагирует меня от них. – ichiwahato

+0

https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html#Specifying%20Names – matzeri

0

для любых других лиц, которые могут быть не знакомы с этим типом установки, компилятор в этом случае означает, что компилятор, который используется для создания самой программы DistCC (GCC и Make).

В моем случае, поскольку я буду запускать distcc на Cygwin на всех машинах, мне не нужно было перекрестно компилировать - поэтому я мог бы просто позволить automake guess build/host/target (требуется перемещение config.guess и config. субфайлы от automake до distcc).