crosscompiling через distcc [SOLVED]
ситуация следующая
Есть сервер(i686), есть ноутбук(amd64)
настроил subj
возникли несколько вопросов
1.собираю kde на ноутбуке, через crossdev компиляция так же выполняется на сервере
Вопрос в следующем - с какими параметрами компиляции? Теми, что на ноутбуке в make.conf или они где то задаются, если да, то где?
2. При настройке указал
distcc-config --set-host "192.168.0.1 192.168.0.20"
первый соответственно сервер, второй ноутбук
Вопрос - правильно ли указано или ту машину на которой выполняетя emerge *** не нужно добавлять в список хостов? Или на ней и так компиляется? просто distccmon-text без указания ноутбука в конфиге выдает , что только на сервер компилируется. Может просто то, что локально компилица он не пишет?
если все-таки убрать из списка хостов ip ноутбука то 3 вопрос вроде даже не возникает...
И вообще важен ли порядок указания?
3. И последний вопрос
во время компиляции некоторых пакетов возникает ошибка
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h:115, from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++io.h:39, from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/iosfwd:48, from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/ios:46, from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/istream:46, from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/fstream:46, from DB2_db.cc:26 /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h:88: error: weakref 'int __gthrw_pthread_once(pthread_once_t*, void (*)())' must have static linkage # таких надписей обычно пачка - штук 20 с разными файлами ... distcc[11053] ERROR: compile DB2_db.cc on 192.168.0.1 failed make[1]: *** [DB2_db.lo] Error 1 ... make[1]: *** [ParsedString.lo] Error 1 make[1]: Leaving directory `/var/tmp/portage/www-misc/htdig-3.2.0_beta6-r3/work/htdig-3.2.0b6/htlib' make: *** [all-recursive] Error 1
Во время установки kde (~100 пакетов) пакетов 10 точно вылетело с подобной ошибкой. Повторная попытка установки имеет такой же результат
при отключении distcc компиляция проходит успешно
Соответсвенно вопрос - может чо-то неправильно настроил?
Или может эти пакеты просто не могут быть распределенно скомпилированы, тогда может можно как нить настроить чтоб в таких случаях конкретные пакеты компилировались локально, без использования distcc??
- Для комментирования войдите или зарегистрируйтесь
скорее всего
скорее всего настроил не правильно. на ru.gentoo-wiki.com есть статья по настройке crossdev distcc
По поводу
По поводу порядка - надо указывать от наиболее мощного к меньшему - в нашем случае ноут первый сервер второй
С кросскомпиляцией правда не сталкивался но distcc сам по себе работает отлично
да настроил то
да настроил то правильно
http://www.gentoo.org/doc/en/distcc.xml
http://www.gentoo.org/doc/en/cross-compiling-distcc.xml
Впрочем я нашел возможно причину -
gcc в тулчейне по дефолту собирается почемуто из ~arch (4.2.3), точнее весь тулчейн собирается из ~arch. Надо прописывать crossdev -S при создании тулчейна, чтоб собрать из стабильной ветки...
щаз пересоберу буду пробовать
Самое интересное, что у меня полмира и X на ноутбуке cобрано с использованием двух разных версий gcc - 4.1.2 на ноуте и 4.2.3 на сервере... Вроде все ок...
_______________________________________________________________
блин, целый час потерял из-за того, что забыл вырубить FEATURES="distcc"
компиляция gcc упорно валилась с одной и той же ошибкой (чо-то такое - "не могу запустить configure")
К сожалению не
К сожалению не удается мне скомпилять стабильный тулчейн (
на gcc stage 1 вылетает с ошибкой
никаких более вменяемых надписей для идентификации ошибки не найдено...
соответственно привожу последние строки
PS повторная сбока ~arch (gcc 4.2.3) тулчейна проходит нормально...
_____________________________________________________________________
полная чистка системы от всех упоминаний x86_64 дала положительный результат - все собралось )
соответственно на ноуте нужно все так же вычистить от i686 и собрать там стабильный тулчейн, чтобы в обе стороны distcc нормально работал...
буду надеяться от 3 проблемы из первого сообщения я избавился )
Я смотрю
Я смотрю пользующихся этим функционалом не много, но все же хотелось бы подитожить...
Тема решена - далее по пунктам
1.Параметры компиляции - предположительно берутся всеже с системы-источника задачи, во всяком случае обратного я не нашел(собстно вообще упоминаний об ентом я неигде не увидел)
2.Указывать нужно все используемые хосты - упоминание об ентом есть в хендбуке. На счет порядка - информация от bober2000 вероятно правдива, во всяком случае визуально, через distccmon больше задач выполняется на том хосте который идет в списке первым. Хотя опять же никакой информации по данному вопросу найдено не было
3.По вопросу ошибок компиляции - будьте внимательнее с версиями пакетов в тулчейне, они должны быть аналогичны на всех хостах. Информация об ентом есть в howto по ссылкам приведенным мною выше, но информации о том, что по дефолту все собирается из ~arch нигде я не увидел. Соответсвенно, если на хостах используете стабильную ветку собирайте тулчейн с crossdev -S, либо четко указывайте версии пакетов.
Собстно все, вопрос решен, тема закрыта.
Всем спасибо ))