2008-11-03 6 views
14

Compiler un programme sur Linux qui appelle les fonctions de minuterie POSIX (par exemple: timer_create, timer_settime) renvoie des erreurs telles que:Qu'est-ce que les bibliothèques doivent être liées pour timer_create, timer_settime et d'autres fonctions liées à la minuterie

 
In function `foo': 
timer.c:(.text+0xbb): undefined reference to `timer_create' 
timer.c:(.text+0x187): undefined reference to `timer_settime' 
collect2: ld returned 1 exit status 

Quelle bibliothèque faire J'ai besoin de lier?

Répondre

3

Cela doit être documenté dans la page de manuel. Étant donné que ce n'est pas ajouter -lrt.

22

Compilez-le avec l'option -lrt. Il sera compilé.

2

s'il vous plaît essayez ce qui suit:

gcc -lrt 
3

Le -lrt force le lien, mais vous devez avoir la bibliothèque en temps réel en place avant de pouvoir créer un lien vers elle. La plupart du temps, il est inclus automatiquement, mais sinon vous devrez installer une bibliothèque en temps réel en utilisant apt-get. Ensuite, vous serez en mesure de créer un lien vers elle à l'adresse suivante (ou similaire) Lieu:

/lib/i386-linux-gnu/librt.so.1

Si vous utilisez codeblocks et pour une raison quelconque -lrt ne comprend pas, vous pouvez ajouter ci-dessus chemin de la bibliothèque & de nom de fichier en utilisant la séquence de menu suivant:

Project->Build Options->Linker Settings->Link Libraries->Add

2

vous pouvez essayer gcc -o mytemer mytimer.c -lrt ça marche pour moi comme ça, mais pas dans cet ordre gcc * LRT mytimer.c -o mytimer

Questions connexes