Красноглазый блог

Тогда твоих зрачков опалы,
Как два фонарика, горят,
И ты во мгле в мой взгляд усталый
Свой пристальный вперяешь взгляд.
© Шарль Бодлер
      ____,,,,,,,,,,,,,,,__                                                                                                    __,,,,,,,,,,,,,,,____      
_,,ooOO@@@@@O***OO@@@@@@@@@@@Ooo,,,                                                                                    ,,,ooO@@@@@@@@@@@OO***O@@@@@OOoo,,_
@''`` /''```      ```''''@@@@@@@@@@Ooo,,                                                                          ,,ooO@@@@@@@@@@''''```      ```''\ ``''@
`@,  /                     ____...'@@@@@Ooo,,                                                                ,,ooO@@@@@'...____                     \  ,@`
 `@o,|                  ,`xxxxxxxxxxxxxo@@@@@Oo,,                                                        ,,oO@@@@@oxxxxxxxxxxxxx`,                  |,o@` 
  `@@,                ,`xxxxxxxxxxxxxxxxxx\'o@@@@Oo,,                                                ,,oO@@@@o'/xxxxxxxxxxxxxx###x`,                ,@@`  
   `@@o,             /xxxxxxxxxxxxxxxxx###x\ '`o@@@@@Oo,                                          ,oO@@@@@o`' /xxxxxxxxxxxxxx#####xx\             ,o@@`   
    `@@@o,          /xxxxxxxxx      xx#####x\   '`o@@@@@Oo,                                    ,oO@@@@@o`'   /xxxxxxxx      xx###xxxx\          ,o@@@`    
     `@@@@o,       |xxxxxxxx       #  x###xxx|       `o@@@@o,                                ,o@@@@o`       |xxxxxxx      #   xxxxxxxx|       ,o@@@@`     
       `@@@@o,     |xxx#xxxx  ,       xxxxxxx|          `o@@@o,                            ,o@@@o`          |xxx#xxx  ,       xxxxxxxx|     ,o@@@@`       
         '@@@@@@o, ,xxx##xxxxx `    xxxxxxxxx|             `o@@o,                        ,o@@o`             |xx###xxxx `    xxxxxxxxxx, ,o@@@@@@'         
           '@@@@@@@@@@xx####xxxxxxxxxxxxxxxx/                 'o@o,                    ,o@o'                 \xx####xxxxxxxxxxxxxxxx@@@@@@@@@@'           
              `'@@@@@@@@@@@@##xxxxxxxxxxxx/                   | `oo,                  ,oo` |                   \xx#####xxxxxxx@@@@@@@@@@@@'`              
                   `''@@@@@@@@@@@@@xxxxx,'                   /    `o,                ,o`    \                   ',xxxxx@@@@@@@@@@@@@''`                   
                         ```''''@@@@@@@@@@@@oo,,,        ,,,oooo@@@@@                @@@@@oooo,,,        ,,,oo@@@@@@@@@@@@''''```                         
                                    ```''''@@@@@@@@@@@@@@@@@@''```                      ```''@@@@@@@@@@@@@@@@@@''''```                                    

Октябрь 5, 2009

Кросс-DistCC в Gentoo

Filed under: Cheats,Gentoo,Soft — Метки: , , — Livid @ 10:15

Недавно я рассказывал о том, как настроить distcc для ваших машин с одинаковыми архитектурами.
Теперь я вкратце расскажу, что делать, если архитектуры разные.

На самом деле, все довольно просто. Чтобы настроить кросс-тулчейн, в комплект стандартной поставки Gentoo входит замечательная утилита crossdev. Устанавливается она из портеджей. Чтобы посмотреть, какие архитектуры она умеет, нужно сделать

crossdev -t help

.
Чтобы собрать кросс-тулчейн, нужно выполнить

crossdev -t arch

где arch — требуемая архитектура, например, x86_64.
Следует, однако, заметить, что для правильной работы crossdev нужен настроенный локальный оверлей и его путь должен быть первым в списке оверлеев. Таким образом, если вы используете layman, make.conf должен выглядеть примерно следующим образом:

#Here we setup PORTDIR_OVERLAY so that first one is /usr/local/portage
PORTDIR_OVERLAY=""
source /usr/local/portage/layman/make.conf
PORTDIR_OVERLAY="/usr/local/portage
${PORTDIR_OVERLAY}"

Итак, после установки кросс-компилятора, distcc должен сам его понять и утилизировать. Однако, вскоре вы заметите, что некоторые ебилды ставятся нормально, в то время как другие выпадают с ошибками компиляции.
Это происходит потому, что нередко ебилды используют не полное название компилятора (например, i686-pc-linux-gnu-gcc), а сокращенное (gcc). distcc вызывает соответственно gcc удаленной машины и обламывается, получив на 64-битной архитектуре 32-битный объектный файл. Чтобы этого избежать, достаточно сделать на distcc-клиенте следующее:
1. Создать скрипт /usr/lib/distcc/bin/${CHOST}-wrapper, где ${CHOST} — это CHOST из make.conf, следующего содержания:

#!/bin/bash
exec /usr/lib/distcc/bin/${CHOST}-g${0:$[-2]} "$@"

и сделать его исполняемым.
2. Сделать так, чтобы симлинки в /usr/lib/distcc/bin указывали на этот скрипт:

cd /usr/lib/distcc/bin
rm cc c++ g++ gcc
echo cc c++ g++ gcc | xargs -n1 ln -s ${CHOST}-wrapper

, не забыв заменить ${CHOST} на его значение (или сделать source /etc/make.conf).

После этого distcc будет работать с кросс-компилятором.

Еще одно замечание: при сборке x86 на x86_64-процессорах, можно вместо честного кросс-компилятора выполнять x86_64-pc-linux-gnu-* с параметром -m32, однако этот метод, вообще говоря, неподдерживаемый и я не гарантирую его работоспособность. Используйте на свой страх и риск.

Ссылки по теме:
Gentoo Linux Documentation – DistCC cross-compiling guide

Связанные посты:

  1. Distcc в Gentoo
  2. VirtualBox PUEL в новом portage
  3. Микроменеджмент логов или удобные logrotate и syslog-ng
  4. Загрузка Gentoo Live CD из ISO при помощи grub4dos
  5. Итак, Gentoo

Комментариев нет »

Комментариев нет.

RSS-лента комментариев к этой записи.

Оставить комментарий

Spam protection by WP Captcha-Free

Powered by WordPress
Creative Commons License
Krasnoglazy Blog by Nikolay "Livid" Yakimov is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.