vendredi 8 mai 2015

Compiler GCC 5.1 sur Raspberry 2

Aujourd'hui j'ai profité du jour férié pour compiler GCC 5.1 sur mon Raspberry 2.

En soit, la procédure n'est pas compliquée, c'est la même que sur n'importe quel linux sauf que depuis quelques temps la compilation nécessite une quantité importante de mémoire. En fait, il faut bien plus que le giga de RAM dont dispose la machine et je n'ai vraiment pas envie de faire de la cross-compilation.

Comme d'habitude, Linux montre sa supériorité dès qu'on sort un peu des sentiers battus. Pour "augmenter" la quantité de mémoire disponible j'ai tout simplement utiliser le module ZRAM.

Mon environnement est la Rasperian, sur les autres distributions la procédure est très proche.

Pour commencer, on va crée un petit script qui va nous faciliter la vie pour la zram :

Copiez les lignes ci-dessous dans votre éditeur favori et sauvegardez le fichier sous le doux nom de "enable-zram"

--------------------------
#!/bin/bash
modprobe zram &&
echo $((350*1024*1024)) > /sys/block/zram0/disksize &&
mkswap /dev/zram0 &&
swapon -p 10 /dev/zram0 &&
exit 0
--------------------------

Ensuite :

chmod +x enable-zram
sudo ./enable-zram

Et voilà, vous disposez maintenant d'une zram 350 Mo.

Maintenant on va télécharger et préparer gcc 

wget http://mirror1.babylon.network/gcc/releases/gcc-5.1.0/gcc-5.1.0.tar.bz2

tar xjvf gcc-5.1.0.tar.bz2

cd gcc-5.1.0

On prépare les variables d'environnements qui vont bien

export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch)

export CPATH=/usr/include/$(gcc -print-multiarch)

et enfin, on passe à la configuration et à la compilation

./configure --prefix=/opt/gcc

make -j2

Remarquez que je compile sur deux coeurs au lieu de 4, nous n'avons tout simplement pas suffisamment de mémoire pour utiliser 4 processus de compilation en même temps, à un moment ou un autre nous risquons de manquer de mémoire.

Voilà, maintenant vous pouvez allez profiter de la journée dehors ou regarder le premier épisode de la trilogie du seigneur des anneaux car la compilation prend beaucoup de temps. Une fois de retour devant votre machine, il ne vous reste plus qu'un installer le compilateur fraîchement compilé :

sudo make install

Et gcc 5.1 sera installé dans /opt/gcc


lundi 4 mai 2015

Installer SDL2 sur Raspberry pi 2 sans XWindow

En ce moment mon nouveau jouet c'est le Raspberry PI 2.

Evidemment, la première chose juste après avoir installer Raspian dessus c'est d'essayer de dompter la bête avec des outils de poilus (le premier qui me parle de Python je lui coupe l'accès à mon blog).

Soyons claire, XWindow sens des dessous de bras sur un PI. C'est bien pour frimé 30 secondes (ouais, c'est un vrai ordinateur) mais pour les choses sérieuses c'est pas le pied.

Sur le PI il existe 3 options de base pour coder et afficher des zolies images :

  1.  OpenGL ES
  2.  OpenVG (je l'aime bien lui)
  3.  Framebuffer des familles.

Mais aucune de ces trois méthodes ne va nous offrir un accès facile aux autre fonctions dont nous pouvons avoir besoins (accès souris, clavier, tactile, ttf...etc).

C'est la que rentre en scène ce bon vieux SDL.

La bonne nouvelle c'est que SDL 2.0.3 est compatible avec le PI 2 à condition de respecter quelques règles de base.

  1. N'essayez pas de l'installer à avec apt-get
  2. Le compiler vous même.

Par chance l'option 2 est simple comme tout.

Assez de blabla, passons aux choses sérieuses.

Téléchargez SDL2 

wget https://www.libsdl.org/release/SDL2-2.0.3.tar.gz

Décompressez l'archive

tar xzvf SDL2-2.0.3.tar.gz

On se place dans le bon répertoire

cd SDL2-2.0.3/

et on passe les options magiques à configure

./configure --host=armv7l-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl --prefix=/opt/sdl

En gros, on désactive tout et SDL va se rabattre automatiquement sur ce qui lui reste comme option. C'est à dire Opengl ES 2, c'est exactement ce qu'il nous faut pour bénéficier gratuitement de l’accélération matériel.

Il ne reste plus qu'a compiler tout ça

make -j4

et ensuite

sudo make install

Et voilà.

Dans le prochain épisode, on va compiler SDL_image et consort.