Chapitre 3. Compilation

Avant toute chose assurez vous que vous pouvez compiler les exemples de client. Commencez par le métronome:

    $gcc -o metronome metro.c
/tmp/cc2hi1P0.o(.text+0x33): In function `process_silence':
: undefined reference to `jack_port_get_buffer'
/tmp/cc2hi1P0.o(.text+0x6f): In function `process_audio':
: undefined reference to `jack_port_get_buffer'
/tmp/cc2hi1P0.o(.text+0x15a): In function `process':
: undefined reference to `jack_get_transport_info'
/tmp/cc2hi1P0.o(.text+0x55d): In function `main':
: undefined reference to `jack_client_new'
/tmp/cc2hi1P0.o(.text+0x5ac): In function `main':
: undefined reference to `jack_set_process_callback'
/tmp/cc2hi1P0.o(.text+0x5d8): In function `main':
: undefined reference to `jack_port_register'
/tmp/cc2hi1P0.o(.text+0x5ea): In function `main':
: undefined reference to `jack_get_sample_rate'
/tmp/cc2hi1P0.o(.text+0x848): In function `main':
: undefined reference to `sin'
/tmp/cc2hi1P0.o(.text+0x89a): In function `main':
: undefined reference to `jack_activate'
collect2: ld returned 1 exit status

Cela ne fonctionne pas, pourquoi ? car nous devons lier les librairies JACK. La FAQ de JACK donne des informations sur ceci.

http://jackit.sourceforge.net/docs/faq.php#a4

JACK utilise pkg-config pour définir les "flags" nécessaire, ainsi nous devons utiliser pour compiler :

$ gcc -o metronome `pkg-config --cflags --libs jack` metro.c

La version de métronome installée avec JACK s'appelle jack_metro, ainsi nous appellerons le nôtre "métronome" pour éviter la confusion.

Si vous n'avez pas pkg-config, tapez

apt-get install pkg-config

ou si vous voulez l'installer à partir des sources

http://freedesktop.org/software/pkgconfig/

pkg-config est un utilitaire astucieux qui trie le nécessaire pour compiler et lie les flags pour la librairie spécifié. Permet aussi de voir les flags nécessaire d'une librairie :

     $pkg-config --cflags --libs jack
-ljack -lpthread -ldl -lrt

Ainsi, je dois lier 4 bibliothèques (jack, pthread, dl et rt), ceci pourrait probablement être différente sur votre système. c'est donc une bonne chose d'utiliser pkg-config. Maintenons essayons de complier metro.c

    $gcc -o metronome `pkg-config --cflags --libs jack` metro.c
$

Aucun message, c'est bon signe. Pour vérifier que tout a bien fonctionné, vous devrez pouvoir utiliser le fichier compilé (métronome) comme ceci :

    $./metronome -b 120

et connectez le à votre sortie audio (avec la commande jack_connect ou JACK Control). Si cela ne fonctionne pas, que jack ne détecte pas le metronome c'est que vous avez un problème de configuration de JACK, vérifiez ceci.

Voici comment faire en mode texte

   $jack_lsp
alsa_pcm:capture_1
alsa_pcm:capture_2
alsa_pcm:playback_1
alsa_pcm:playback_2
metro:120_bpm

$jack_connect metro:120_bpm alsa_pcm:playback_1

jack_lsp énumère les ports disponibles. Un bip sort des haut-parleurs à 120 bpm. Notez que le signal sonore sort d'un haut-parleur seulement ? C'est parce que j'ai seulement connecté à playback_1. Si vous voulez faire bip stéréo, reliez le métronome port playback_2. Pour arreter le metronome faire un "Ctrl+c"

Si en fin de compte vous n'avez pas réussi a faire fonctionner metro.c, pensez à vérifier que vous utiliser la version des clients d'exemple qui vont avec votre version de JACK.