A voir également:
- [c] Cygwin : problème de compilation (fork)
- Telecharger cygwin - Télécharger - Édition & Programmation
- Cygwin ou shell bash ✓ - Forum Shell
- Un moyen d'installer gcc dans cygwin ? ✓ - Forum Programmation
- Cygwin "cannot execute binary file" - Forum Windows
6 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
15 oct. 2006 à 23:27
15 oct. 2006 à 23:27
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.
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.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
16 oct. 2006 à 13:34
16 oct. 2006 à 13:34
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 fork
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
le fait d'inclure <*.h> ne suffit pas.
En effet dans ces fichiers il n'y a que la déclaration de fork
int 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
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
16 oct. 2006 à 16:05
16 oct. 2006 à 16:05
En ce qui me concerne (sous linux) la version
... compile parfaitement. Je pense que ta libc a un problème, tu devrais la réinstaller.
Bonne chance
#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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
>
Fab
17 oct. 2006 à 16:23
17 oct. 2006 à 16:23
c'est :
gcc -lc
qu'il faut taper.
ça résoudra pas ton problème, mais ça peut te servir dans la suite.
Pour résumé, fork se trouverai dans la libc standard.
Donc, si il ne le trouve pas, il faut trouver une autre lib qui contient fork().
gcc -lc
qu'il faut taper.
ça résoudra pas ton problème, mais ça peut te servir dans la suite.
Pour résumé, fork se trouverai dans la libc standard.
Donc, si il ne le trouve pas, il faut trouver une autre lib qui contient fork().
Fab
>
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
18 oct. 2006 à 07:48
18 oct. 2006 à 07:48
Ah oui d'accord: je comprends mieux maintenant.
Merci pour ces précisions !
Fab
Merci pour ces précisions !
Fab
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
> 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
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
17 oct. 2006 à 08:58
17 oct. 2006 à 08:58
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
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
16 oct. 2006 à 13:19
oui en effet il s'agit d'un problème de liaison...
> il faut ajouté la bonne bibliothèque
normalement j'ai ajouté le header <unistd.h> alors ça devrait fonctionner, il me semble...
Fab