[c] Cygwin : problème de compilation (fork)
Fab
-
Tarboeuf -
Tarboeuf -
Bonjour,
Je viens d'installer Cygwin et je rencontre un problème de compilation avec le programme en C qui suit :
Le compilateur me retourne l'erreur : Undefined reference to `fork`.
Est-ce que quelqu'un sait d'où peut provenir cette erreur ?
Fab
Je viens d'installer Cygwin et je rencontre un problème de compilation avec le programme en C qui suit :
#include <unistd.h>
#include <sys/types.h>
int main (int argc, char ** argv)
{ pid_t p = fork(); return 0; }
Le compilateur me retourne l'erreur : Undefined reference to `fork`.
Est-ce que quelqu'un sait d'où peut provenir cette erreur ?
Fab
6 réponses
-
je pense que c'est le lieur qui renvoi l'erreur. à vérifier.
Si quand tu tape gcc -c [nom prog] {autres option}
il n'y a pas d'erreur. C'est bien un problème de liaison.
dans ce cas, il faut ajouté la bonne bibliothèque (connait pas, dsl)
sinon, vérifie bien que fork est déclarer dans tes includes. -
ba voila. LE problème est cerné.
le fait d'inclure <*.h> ne suffit pas.
En effet dans ces fichiers il n'y a que la déclaration de forkint fork(void);
tu imagine bien que si il y avait l'implémentation complete, tu ne pourrai utiliser le fork que dans un seul fichier source. Ce qui est restrictif.
Pour éviter cela, fork est implémenter dans un fichier source, et compilé. Ces fonctions compilé courante sont regroupé dans des fichiers bibliothèque de nom "lib[corps].a". pour les appeler lors du link, il faut fair :
ld ... -l[corps]
par exmple pour openGL, tu as libopengl32.a, et tu l'apel avec -lopengl32
le include <gl.h> ne suffit pas.
Pour ton problème, par contre, je ne sais pas ou est situé fork. Surment dans une lib* proche du .h
Bonne chance -
En ce qui me concerne (sous linux) la version
#include <unistd.h> #include <sys/types.h> int main (int argc, char ** argv) { pid_t p = fork(); return 0; }
... compile parfaitement. Je pense que ta libc a un problème, tu devrais la réinstaller.
Bonne chance -
Merci pour vos réponses !
> je ne sais pas ou est situé fork. Surment dans une lib* proche du .h
Je n'ai pas trouvé la libraire en question, et je ne connais pas un moyen de la trouver. Tout ce que je sais, c'est que la fonction dont j'ai besoin - fork() - est définie dans <unistd.h>.
Le programme de test fonctionne bien sous linux, je suis simplement déçu de ne pas réussir à le faire fonctionner sous cygwin !
Je reste avec mon erreur : undefined reference to `fork` ...
Fab -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je suis tombée sur ça :
https://www.mail-archive.com/cygwin-cvs@cygwin.com/msg02907.html
As-tu essayé de mettre à jour ton cygwin ?
Je ne sais pas si ça règlera ton problème -
Je reviens sur le probleme, mais je pense qu'en rajoutant -lcygwin dans la ligne de l'éditeur de liens suffit car un grand nomre de fonctions son présente dans cette librairie.