libuv référence indéfinie à uv_loop_new

Après la compilation, j’essaye de lancer le programme exemple libuv :

#include  #include  int main() { uv_loop_t *loop = uv_loop_new(); printf("Now quitting.\n"); uv_run(loop, UV_RUN_DEFAULT); return 0; } 

Mais, lorsque j’essaie de courir, j’obtiens l’erreur suivante:

 **/tmp/ccHTpspB.o: In function `main': main.c:(.text+0x9): undefined reference to `uv_loop_new' main.c:(.text+0x28): undefined reference to `uv_run' collect2: error: ld returned 1 exit status** 

Où me suis-je trompé ?

PS: Cela ne fonctionne pas avec #include “uv.h”

Vous devez lier libuv.a avec votre code compilé et l’éditeur de liens ne sait pas où trouver le libuv compilé.

Pour vous donner une meilleure réponse, il faudrait que vous voyiez la commande comstack, mais entre-temps, je vous recommande vivement cette vidéo dans laquelle Ryan construit un exemple de projet libuv. Le code qu’il utilise est un peu obsolète, car l’API a changé, mais je pense que vous trouverez le début de la mise au point d’un projet très instructif.

http://vimeo.com/24713213

Dans Ubuntu, j’ai utilisé la commande suivante avec succès:

 gcc sample.c -luv