07 juillet 2006

How To: installer la fmod 3.75 sur linux?

Tout d'abord, qu'est-ce que la fmod?
Sans rien vous cacher, je peux vous dire que c'est une library qu...
...Qu'est-ce qu'une library?
Une library (je ne l'écris pas librairie car le mot library se traduit bibliothèque en français) est - en programmation bien sûr - un ensemble de fonctions qui ont un but commun et qui peuvent s'appeler entres-elles, ces fonctions ou procédures sont déclarées par des fichiers d'en tête (en anglais header *.h) inclues par le développeur s'il en a besoin dans son code.
Qu'elle est la particularité de la fmod en tant que library ?
La fmod est tout simplement une library très puissante qui gère le son (musique, bruitage) et les effets sonores. De plus elle est gerée par une multitude de platforme.
Donc sa spécialité, c'est le son et elle marche aussi bien sur PC que sur Mac si j'ai assimilé?
En effet c'est presque ça, sauf que par multiplatforme j'entends différents systèmes d'exploitation, par exemple MS-Windows, GNU/Linux, Mac OS, mais j'entends aussi quelque chose qui va vous étonner : des consoles de jeu.
Mais comment fait-elle pour que le fichier soit lisible sur tout ça?
Quand on code un programme, on tape des commandes bien sûr, et entre autre des commandes pour les accès aux sons si on veut en utiliser (par exemple charger un fichier audio, le lire, ...), ces fonctions sont toujours les mêmes tant qu'elles sont dans le code source, cependant le fichier library lui varie en fonction de la platforme, c'est comme ça cela qu'on peut compiler les fonctions de cette library dans notre programme, dans un format binaire compréhensible par la machine ou le système.
J'énumère donc les treize différentes platformes que supporte la fmod:
- Windows 32bit
- Windows 64bit (AMD64)
- Linux
- Linux 64bit (AMD64)
- Macintosh (os8/9/10/x86)
- Windows CE (Pocket PC / Smart phone)
- Playstation 2
- Xbox
- GameCube
- Xbox 360
- Playstation Portable
- PLAYSTATION®3
- Wii

La library et ses en-têtes pour chaque platforme respective sont téléchargeables sur le site de la fmod dans la section download (si ce n'est pour les consoles où une documentation est complémentaire).
Il y a la version 4.04 sur le site, pourquoi installe-t-on la 3.75?
La version 4.04 est déjà installée d'office sur certaines distributions, mais même si ce n'est pas le cas, la procédure est la même, sauf qu'au lieu d'appeler les fichiers fmod, ils se nommeront fmodex. Pour connaître les différences entre fmod et fmodex je vous laisse regarder le tableau de la rubrique comparison du site de la fmod. Le choix d'installer ici la fmod est qu'elle est encore populaire, et qu'elle nourrit largement nos besoins en programmation sonore.

Comment installer la fmod?

Pour commencer, il va falloir récupérer la library : FMOD 3.75 linux. Dans l'archive, seul le dossier api nous intéresse (vous pouvez consulter le reste: c'est de la documentation et des exemples), et dans ce dossier seul le fichier *.so qui représente la bibliothèque de fonction et le contenu du dossier inc qui contient les headers vont nous servir. Le mieux est de les décompresser sur un endroit visible comme le bureau ~/Desktop.
Cette version de la fmod est censée être - pour linux - dans le dossier du projet; Mais afin de pouvoir l'utiliser comme n'importe quelle library c'est à dire, en la liant avec -lfmod dans le compilateur, au lieu de préciser son arborescence à chaque fois, quelques manipulations simples s'envisagent.

Le fichier qui contient les fonctions s'appelle libfmod-3.75.so. Normalement, un lien symbolique devrait être fourni dans l'archive, ce n'est pas le cas donc il devient nécessaire de changer le nom du fichier (ou de créer un lien symbolique).
Le paramètre -lfmod du compilateur cherche la library qui se nomme libfmod.so dans le dossier /usr/lib ou/et usr/local/lib; Sous windows, il cherche le fichier libfmod.a dans le dossier lib du compilateur.
Pour faire un makefile (script de compilation) efficace qui reprennent les mêmes options du compilateur sous chacun des systèmes, le fichier libfmod-3.75.so doit être rennomé en libfmod.so. Cela fait, il est temps de lui présenter son domicile, ouvrez un terminal puis saisissez (si votre distribution n'utilise pas sudo, connect vous en root):
sudo chown root chemin/libfmod.so
$ sudo chgrp root chemin/libfmod.so
Cela va changer le propriètaire du fichier et du groupe en root, c'est nécessaire pour les library par question de sécurité. Les permissions sont lecture, écriture et éxecution pour le propriètaire et, lecture et éxecution pour le groupe et les autres.
Ensuite, déplacez le dans le dossier /usr/lib où il finira sa vie:
$ sudo mv chemin/libfmod.so /usr/lib
Si cette méthode ne vous plait pas, vous pouvez toujours garder le nom du fichier, puis créer un lien symbolique ou alors préciser l'emplacement exact du fichier lors du link "chemin/ libfmod-3.75.so" au lieu de -lfmod.

Maintenant il ne reste plus qu'à s'occuper des headers, cette fois ci ce n'est plus une histoire de compilateur qui gène, mais de source: si vous ne voulez pas modifier vos sources en changeant de platforme, il va falloir que l'endroit d'où l'on inclue les headers soit le même: <fmod/fmod.h>, donc /usr/include/fmod. L'opération est plus simple, dans un terminal entrez:
$ sudo chown root chemin/fmod.h chemin/fmod_errors.h chemin/fmoddyn.h chemin/wincompat.h
$ sudo chgrp root chemin/fmod.h chemin/fmod_errors.h chemin/fmoddyn.h chemin/wincompat.h
On donne les fichiers au root et à son groupe, les permissions sont les mêmes que celles du fichier *.so.
$ sudo mkdir /usr/include/fmod
Puis déplacer chacun des fichiers:
$ sudo mv chemin/fmod.h chemin/fmod_errors.h chemin/fmoddyn.h /usr/include/fmod
Voilà vous pouvez maintenant inclure la fmod par #include <fmod/fmod.h> dans vos sources et l'appeler par -lfmod dans le compilateur.