Kereszt-platform fordítófarm beállítása: RasPi
A RasPi konfigurálása
A most aktuális 2012-10-28-wheezy-raspbian rendszert vesszük alapul a munkánkhoz, ezt a hivatalos oldalról tölthetjük le. Mivel ez a leírás inkább közép-haladóknak szól, így nem részletezném túlságosan az alapvető lépéseket, azokról részletes információk találhatóak a már linkelt oldalakon.
Ezt a lemezt dd vagy Windows alól a Win32DiskImager programmal írhatjuk memóriakártyára. Végezzük el a szokásos használatba vételi lépéseket: kártyán lévő hely kihasználása, tuning és memória elosztás beállítások.
A rendszerben a 4.6-os gcc az alapértelmezett. Telepítsük fel a 4.7-eset. Erre a lépésre azért van szükség, mert a készen elérhető cross-compiler is 4.7-es.
sudo apt-get update
sudo apt-get install gcc-4.7*
Ezek után következik az icecc telepítése.
sudo apt-get install icecc icecc-monitor
Ha ezzel is megvagyunk, akkor állítsuk be, hogy az alapértelmezett gcc 4.6 helyett a 4.7 és az icecc is használható legyen:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/icecc 30
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/icecc 30
Ellenőrizzük, hogy az icecc lett-e az alapértelmezett, ha nem az, akkor válasszuk ki őt:
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
A konfigurációs fájlok módosításához valamilyen általunk ismert szerkesztőprogramra is szükség lesz, ha nem vagyunk jártasak a vi vagy a nano programok kezelésében, akkor telepíthetjük az mc-t:
sudo apt-get install mc
Állítsuk be az icecc demon szolgáltatás paramétereit:
sudo mcedit /etc/icecc/icecc.conf
A szerkesztőben a következő paramétereket érdemes megváltoztatni:
ICECC_NETNAME="iceccfarm"
ICECC_MAX_JOBS="1"
ICECC_ALLOW_REMOTE="yes"
ICECC_SCHEDULER_HOST="192.168.0.101"
Ezek lényege, hogy mi legyen a farm neve, 1 feladatot fogadjon egyszerre, távolról kapott feladatokkal is foglalkozhasson, mi a farm koordinátorának címe. A koordinátor gép normál pécén futó linux lesz, ennek beállításáról később lesz szó. Ha valaki más operációs rendszer használ a mindennapokban, az se ijedjen meg, lesz rá megoldás a leírásban.
A változtatás alkalmazásához indítsuk újra az icecc demon-t.
sudo service icecc restart
Ahhoz, hogy jól működjön a fordítás, még néhány környezeti változót is be kell állítani. Ezt érdemes a .bashrc végéhez fűzni, így nem kell állítgatni minden belépés után.
mcedit ~/.bashrc
export ICECC_CC=gcc-4.7
export ICECC_CXX=g++-4.7
export MAKEFLAGS=-j10
export USE_SCHEDULER=192.168.0.101
export ICECC_VERSION="armv6l:/home/pi/arm-native.tar.gz,i686:/home/pi/arm-cross-i386.tar.gz"
A MAKEFLAGS értékéül adott -j10 határozza meg, hogy hány párhuzamos szálon fordítson a gcc. Az ICECC_VERSION azt tartalmazza, hogy melyik platformot használó másik gépre melyik toolchain-t kell küldeni, hogy fordítani tudjon számunkra megfelelő eredményt. Ezeket még nem hoztuk létre, előbb az arm rendszerek számára készítsük el a következő parancs kiadásával:
icecc --build-native
Ez a következőhöz hasonló kimenetet fog mutatni:
adding file /usr/bin/gcc
adding file /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
adding file /lib/arm-linux-gnueabihf/libc.so.6
adding file /lib/ld-linux-armhf.so.3
adding file /lib/arm-linux-gnueabihf/libm.so.6
adding file /usr/bin/g++
adding file /usr/bin/as
adding file /usr/lib/libopcodes-2.22-system.so
adding file /usr/lib/libbfd-2.22-system.so
adding file /lib/arm-linux-gnueabihf/libdl.so.2
adding file /lib/arm-linux-gnueabihf/libz.so.1
adding file /lib/arm-linux-gnueabihf/libgcc_s.so.1
adding file /usr/bin/cc1=/usr/lib/gcc/arm-linux-gnueabihf/4.7/cc1
adding file /usr/lib/arm-linux-gnueabihf/libmpc.so.2
adding file /usr/lib/arm-linux-gnueabihf/libmpfr.so.4
adding file /usr/lib/arm-linux-gnueabihf/libgmp.so.10
adding file /usr/bin/cc1plus=/usr/lib/gcc/arm-linux-gnueabihf/4.7/cc1plus
adding file /usr/lib/gcc/arm-linux-gnueabihf/4.7/liblto_plugin.so
adding file /etc/ld.so.conf=/tmp/icecc_ld_so_confcEGZSC
creating e0a922d958057f5c638fc358305129a2.tar.gz
A toolchain egy véletlenszerűen generált néven kerül mentésre, ezt nevezzük át:
mv e0a922d958057f5c638fc358305129a2.tar.gz arm-native.tar.gz
Az x86 rendszerek számára normál gépen futó linux alól készítünk toolchaint, ami a most következő lépés lesz. Az ott elkészített toolchaint ne feledjük majd a RasPi-re felmásolni (arm-cross-i368.tar.gz néven).
A cikk még nem ért véget, kérlek, lapozz!