3 Installation de SDL 1.3

Et oui, ça serai trop simple si on pouvait utiliser SDL 1.2. Mais malheureusement pour nous SDL 1.2 ne peut pas créer de contexte OpenGl 3, donc il faut prendre la version supérieur de SDL qui n'est pas disponible dans les paquets car elle est encore en développement. Nous allons donc devoir compiler et installer ses sources.

Pour installer SDL 1.3, téléchargez les sources ici.

Allez dans le dossier en ligne de commande :

cd chemin/vers/le/dossier

Nous allons installer SDL_1.3 dans /home/votre_nom/usr

Pourquoi faut-il faire cela ?

Dans ce cas, si vous ne mettez rien en paramètre de ./configure, SDL_1.3 va s’installer dans /usr/local.

Et alors ? Mon autre SDL est dans /usr

Oui, ce n'est pas un problème pour l'écrasement éventuelle de l'autre SDL, c'est que vous ne pourrez plus vous en servir, car le compilateur cherche les lib d'abord dans /usr/local (pour les nouveautés) et après dans /usr, et comme il y aura une SDL dans /usr/local, il n'ira pas chercher plus loin, et comme SDL_1.3 n'est pas rétro-compatible avec SDL_1.2, vous allez rager que vos programmes SDL ne fonctionnent plus.

Donc, ce que l'on fait, c'est installer SDL_1.3 à un endroit où le compilateur n'ira pas la chercher par défaut. Et on lui dira nous même, où il faudra qu'il aille la chercher.

Donc je vous invite à créer un dossier usr dans votre home (/home/votre_nom) pour installer SDL_1.3

Mais ce n'est pas tout, il faut également dire à l’installation de OpenGl que l'on ne veut pas OpenGlES (le OpenGl des téléphones portables), pour cela il faut rajouter l'option --disable-video-opengles

On donne donc le préfixe d'installation à configure :

./configure --prefix=$HOME/usr_SDL_1.3/ --disable-video-opengles

Je vous épargne tout ce qui arrive dans le terminal.

Puis faites :

make

Et ensuite :

make install

Et quand tout sera finit vous aurez une SDL toute neuve.

Vous auriez pu faire make install directement, mais comme ça vous savez faire les deux méthodes.

Oui, mais je suis en train de me dire que l'on a pas fait ça pour OpenGl 3.1, c'est grave docteur ?

Non, car ça a été prévu pour OpenGl 3.1, c'est dans le programme que vous allez dire si vous voulez utiliser les fonctions d'OpenGl 3.1. Et tout cela avec une simple macro.

Il reste encore un minuscule petit détail : comme on a installer SDL_1.3 dans un autre dossier que les dossiers habituels, il faut dire au système d'aller chercher la librairie dynamique (.so) à un nouvel endroit.

Et pourquoi on utilise pas une librairie statique, comme avant ?

Et bien, en fait, depuis le début on utilise des librairies dynamique : quand on utilise SDL, OPENGL, on utilise des librairies dynamiques, pour une raison de commodité.

Quelle commodité ?

Alors, quand vous utilisez une librairie statique (.a), vous devez mettre toutes les dépendances dans la fonction target_link_libraries, mais le problème c'est que la liste des dépendances de SDL et OpenGL est très très grandes car se sont des libs du système. Le gros avantage des librairies dynamiques c'est qu'elles connaissent leurs dépendances, mais le système les lie au programme que lorsqu’on l'exécute, mais dans ce cas il faut dire au système d'aller chercher la lib dans un autre dossier, pour cela il faut taper la commande suivante :

export LD_LIBRARY_PATH=$HOME/usr_SDL_1.3/lib:$LD_LIBRARY_PATH

Avec cette commande vous allez dire à votre système qu'il faut qu'il chercher dans un dossier supplémentaire pour chercher les libs dynamiques (.so)

Pour ne pas devoir faire cette commande à chaque démarrage, je vous conseil de mettre cette ligne à la fin du fichier .bashrc situé dans votre home (/home/votre_nom/.bashrc)

Et ce n'est pas fini, vous avez encore une méthode (mais qui n'est pas propre, en tout cas pas autant que celle que je viens de vous montrer).