Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/10/2007, à 22:25

Anonymouse

[Résolu] [Langage C] Impossible de compiler:

Bonjour wink

J'essaye de compiler un programme en c qui génère un thread or si la compilation marche à l'université (Pc sous Ubuntu) elle échoue chez moi.
Le problème doit venir des librairies mais je n'ai pas trouvé de réponses à mon problème sur le net.

Voici la ligne et les erreurs me posant problème:

meuh@ubuntu:~/Desktop/Nouveau dossier/Code à compléter$ cc −D_REENTRANT talk.c −o talk −lpthread
cc: −D_REENTRANT : Aucun fichier ou répertoire de ce type
cc: −o : Aucun fichier ou répertoire de ce type
cc: −lpthread : Aucun fichier ou répertoire de ce type

Avez vous une idée du problème?
Merci d'avance de vos réponses:P

Dernière modification par Anonymouse (Le 19/10/2007, à 23:47)

Hors ligne

#2 Le 19/10/2007, à 22:46

AuraHxC

Re : [Résolu] [Langage C] Impossible de compiler:

Je pense qu'ils ont des librairies d'installé que tu ne possède pas.
Le mieux serait peut être de posé la question à l'administrateur de ton université pour lui demander ce qu'il a installé de particulier parce que ca peut être des librairies typiquement fait par tes profs, genre dans mon université je devais a un moment utiliser une librairie graphique fait par un de mes profs donc a part la prendre à la fac et la mettre sur mon système pas d'autre solution.

Sinon pour les options que tu donne, -D c'est bien pour le preprocessing ?? en gros ton -D_REENTRANT c'est comme si tu faisais un #define _REENTRANT dans ton programme (je tente de me souvenir de ca parce que j'utilise pas cette option) et ton -lpthread c'est pour charger les headers qui se trouve dans le dossier pthread ou une librairie.

Par contre le -o qui fonctionne pas c'est étonnant vu que c'est pour donner le nom de ton executable. Je pense pas que ca vient de ca mais pourquoi tu tape pas gcc au lieu de cc => cc -> compilateur C (général); gcc -> GNU compilateur C

Dernière modification par AuraHxC (Le 19/10/2007, à 22:48)

Hors ligne

#3 Le 19/10/2007, à 23:03

yugo

Re : [Résolu] [Langage C] Impossible de compiler:

j'ai du mal à croire que la commande que tu entres donne ce résultat...
normalement cc pointe vers gcc (en tout cas chez moi).
par curiosité:  ls -l /etc/alternatives/cc , ça donne quoi?

sinon pour avoir les en têtes, installe le paquet libc6-dev, ou mieux, le méta-paquet build-essential


Dans la vie il y a 3 sortes d'imbéciles: ceux qui doutent de tout et ceux qui doutent de rien

Hors ligne

#4 Le 19/10/2007, à 23:22

Anonymouse

Re : [Résolu] [Langage C] Impossible de compiler:

AuraHxC a écrit :

Je pense qu'ils ont des librairies d'installé que tu ne possède pas.
Le mieux serait peut être de posé la question à l'administrateur de ton université pour lui demander ce qu'il a installé de particulier parce que ca peut être des librairies typiquement fait par tes profs, genre dans mon université je devais a un moment utiliser une librairie graphique fait par un de mes profs donc a part la prendre à la fac et la mettre sur mon système pas d'autre solution.

Sinon pour les options que tu donne, -D c'est bien pour le preprocessing ?? en gros ton -D_REENTRANT c'est comme si tu faisais un #define _REENTRANT dans ton programme (je tente de me souvenir de ca parce que j'utilise pas cette option) et ton -lpthread c'est pour charger les headers qui se trouve dans le dossier pthread ou une librairie.

Par contre le -o qui fonctionne pas c'est étonnant vu que c'est pour donner le nom de ton executable. Je pense pas que ca vient de ca mais pourquoi tu tape pas gcc au lieu de cc => cc -> compilateur C (général); gcc -> GNU compilateur C

le -lpthread effectue le lien avec la bibliothèque des threads.

Pour le _REENTRANT j'avoue que c'est une commande du prof que je n'ai pas trop comprise je lui demanderai la prochaine fois.

L'explication se trouve en anglais ici: http://pauillac.inria.fr/~xleroy/linuxthreads/faq.html

Que je tape gcc ou cc cela me fait la même chose tongue

yugo a écrit :

j'ai du mal à croire que la commande que tu entres donne ce résultat...
normalement cc pointe vers gcc (en tout cas chez moi).
par curiosité:  ls -l /etc/alternatives/cc , ça donne quoi?

sinon pour avoir les en têtes, installe le paquet libc6-dev, ou mieux, le méta-paquet build-essential

Bah en fait le code que j'ai tapé ne compile pas:
         -Sur mon PC: ubuntu feisty fawn
         -Sur le pc de mes parents xubuntu

Le paquet build-essential est bien installé

Un ls -l /etc/alternatives/cc me donne:
             lrwxrwxrwx 1 root root 12 2007-09-09 03:45 /etc/alternatives/cc -> /usr/bin/gcc

Merci de votre aide big_smile

Dernière modification par Anonymouse (Le 19/10/2007, à 23:24)

Hors ligne

#5 Le 19/10/2007, à 23:38

AuraHxC

Re : [Résolu] [Langage C] Impossible de compiler:

je viens de faire un test just for fun :

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *print_message_function( void *ptr );

main()
{
     pthread_t thread1, thread2;
     char *message1 = "Thread 1";
     char *message2 = "Thread 2";
     int  iret1, iret2;

    /* Create independent threads each of which will execute function */

     iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1);
     iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2);

     /* Wait till threads are complete before main continues. Unless we  */
     /* wait we run the risk of executing an exit which will terminate   */
     /* the process and all threads before the threads have completed.   */

     pthread_join( thread1, NULL);
     pthread_join( thread2, NULL); 

     printf("Thread 1 returns: %d\n",iret1);
     printf("Thread 2 returns: %d\n",iret2);
     exit(0);
}

void *print_message_function( void *ptr )
{
     char *message;
     message = (char *) ptr;
     printf("%s \n", message);
}

avec un :

nicolas@nicolas-laptop:~/Desktop$ gcc -lpthread thread.c -o thread
nicolas@nicolas-laptop:~/Desktop$ ./thread 
Thread 1 
Thread 2 
Thread 1 returns: 0
Thread 2 returns: 0
nicolas@nicolas-laptop:~/Desktop$

Donc pas de soucis de mon coté et j'ai rien installé de particulier a part build-essential.

Hors ligne

#6 Le 19/10/2007, à 23:47

Anonymouse

Re : [Résolu] [Langage C] Impossible de compiler:

Je viens de compiler avec ta commande et il n'y a pas de problèmes je crois que je ne vais pas chercher plus loin.

Je te remercie de ton aide big_smile précieuse

Hors ligne

#7 Le 20/10/2007, à 11:19

AuraHxC

Re : [Résolu] [Langage C] Impossible de compiler:

De rien wink
Amuse toi bien avec les threads tongue

Hors ligne