J'essaie de suivre this tutoriel d'introduction sur jack (serveur audio pour linux). Dans le tutoriel, l'auteur explique que vous devez utiliser pkg-config
pour trouver le cflags
et libs
pour la prise, ce qui rend la commande gcc
comme ceci:référence non définie à `jack_client_close`, et al
gcc -o simple_client `pkg-config --cflags --libs jack` simple_client.c
qui donne la sortie:
/tmp/ccyuOC0u.o: In function `signal_handler':
simple_client.c:(.text+0x16): undefined reference to `jack_client_close'
/tmp/ccyuOC0u.o: In function `process':
simple_client.c:(.text+0x6f): undefined reference to `jack_port_get_buffer'
simple_client.c:(.text+0x87): undefined reference to `jack_port_get_buffer'
/tmp/ccyuOC0u.o: In function `main':
simple_client.c:(.text+0x25b): undefined reference to `sin'
simple_client.c:(.text+0x2c1): undefined reference to `jack_client_open'
simple_client.c:(.text+0x372): undefined reference to `jack_get_client_name'
simple_client.c:(.text+0x3b1): undefined reference to `jack_set_process_callback'
simple_client.c:(.text+0x3ca): undefined reference to `jack_on_shutdown'
simple_client.c:(.text+0x3ee): undefined reference to `jack_port_register'
simple_client.c:(.text+0x419): undefined reference to `jack_port_register'
simple_client.c:(.text+0x475): undefined reference to `jack_activate'
simple_client.c:(.text+0x4c5): undefined reference to `jack_get_ports'
simple_client.c:(.text+0x514): undefined reference to `jack_port_name'
simple_client.c:(.text+0x52c): undefined reference to `jack_connect'
simple_client.c:(.text+0x56e): undefined reference to `jack_port_name'
simple_client.c:(.text+0x586): undefined reference to `jack_connect'
simple_client.c:(.text+0x5ba): undefined reference to `jack_free'
collect2: ld returned 1 exit status
Je suis pas très expérimenté en général en utilisant gcc ou en écrivant c programmes (la plupart de mon expérience a été avec javascript, clojure, java, python et php). Ce que je comprends de ceci et de mes recherches, c'est que certaines bibliothèques sont manquantes ou liées incorrectement (pas sûr de laquelle).
Il suffit donc de courir pkg-config --cflags --libs jack
sur ma machine, je reçois:
-ljack
Dans le didacticiel référencé ci-dessus, l'auteur démontre la même méthode pour glaner les libs être lié à la prise, mais sa sortie se présente comme suit :
-ljack -lpthread -ldl -lrt
Je ne sais pas ce que pthread est, mais je pense que dl est dsp-chargeur, et a rt quelque chose à voir avec en temps réel. J'ai cherché dans plusieurs répertoires appelés /lib
et je n'ai rien trouvé pour ces autres bibliothèques, donc je ne pense pas qu'elles existent sur ma machine. Cependant, il me semble étrange que l'appel pkg-config
ne fasse aucune mention d'eux. Comment dois-je aller pour trouver ces bibliothèques? Ou suis-je sur la mauvaise piste?
Cette commande fonctionne-t-elle: 'gcc -o simple_client $ (pkg-config --cflags --libs jack) -ljack -lpthread -ldl -lrt simple_client.c'? – Tuxdude
malheureusement pas – tjb1982
cela vous dérange modifier l'affichage avec les erreurs que vous obtenez lorsque vous avez exécuté la commande gcc ci-dessus? Ce serait une information utile pour déboguer ce qui ne va pas. – Tuxdude