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.

11 commentaires:

remram44 a dit…

Ca fait bizarre quand tu écris "la fmod", moi je dis fmod tout court :p

Sin a dit…

si c'est pour dire un commentaire de ce type, tu sors !?
Pis ça le fait "la fmod" : téléchargez fmod / télécharger la fmod, toi on dirait que tu parles d'un add-on pour un jeu quand tu dis fmod, le "la" c'est plus jolie, mais bon on s'en fout?

blinus a dit…

Salut Sin !

Je te dis un grand merci pour tes explications ultra-précises !

Comme je débute sous Linux, je ne savais absolument pas comment installer cette "library"...
Même sur le site fmod.org, on explique comment utiliser cette bibliothèque mais pas comment l'installer (certainement trop simple :))

Aussi, c'est grâce à toi...
et grâce à toi seulement ! (et grâce à google qui m'a permis de trouver ton site) que j'ai réussi à l'installer !

Big mercis !
Avec des gens comme toi, les autres progressent !

Merci,
Titus

Xaviou a dit…

Bonjour,

Merci pour les explications, mais je rencontre un petit problème:
Je suis sous Ubuntu 6.10 Amd64, et lorsque je "linke", j'obtiens le message suivant :

libfmod-3.75.so: ne peut lire les symboles: Fichier dans un mauvais format

Je suppose je cela est dû à la version 64bits d'Ubuntu, mais dans ce cas, comment faire ?

Merci d'avance

Sin a dit…

Salut, désolé de répondre que now j'avais pas regardé les commentaires.
Merci Titus^^
Pour ce qui est de la version 64, tu as téléchargé la version Linux 64bit (AMD64) au lieu de 32 bit je pense et ça doit être les mêmes fichiers, mais je peux pas trop te dire car j'ai pas de 64bits chez moi^^ En fait ça devrait marcher pareil:s
A la limite essaye la procédure sur un autre PC 64bits pour voir si ça marche ou si vient de chez toi, je peux pas trop dire, désolé^^ !

Anonyme a dit…

merci pour la clarte de tes explication

Alejandro33 a dit…

Merci pour ton tuto, c'est trop bien commenté, tu expliques clairement les choses.
J'ai eu du mal a trouver ton blog, y'a rien sur le net pour expliquer comment installer la fmod, heureusement que t'es là

mickro a dit…

rien à ajouter de plus qu'un autre merci

Minux a dit…

Je suis arrivé sur ton blog grâce ala docu sur ubuntu-fr
T'expliques bien la chose, merci, je commençais à galerer !

snx2 a dit…

Moi j'avais un problème pour lire les sons sous jaunty 9.04. Ce problème intervient après toutes les manipulations ci-dessus.

Pour régler le problème, il faut Configurer la sortie audio AVANT l'initilisation de FMOD :

FSOUND_SetOutput(FSOUND_OUTPUT_ALSA);

Avant la ligne
FSOUND_Init(44100, 32, 0);

J'espère que ça aidera quelques personnes. @ bientôt et vive le libre.

Anonyme a dit…

I truly believe that we have reached the point where technology has become one with our world, and I am 99% certain that we have passed the point of no return in our relationship with technology.


I don't mean this in a bad way, of course! Societal concerns aside... I just hope that as the price of memory drops, the possibility of copying our brains onto a digital medium becomes a true reality. It's a fantasy that I daydream about every once in a while.


(Posted on Nintendo DS running [url=http://knol.google.com/k/anonymous/-/9v7ff0hnkzef/1]R4i SDHC[/url] DS SKu2)