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 03/12/2010, à 10:12

zewanderer

problème lors de la compilation "undefined reference to main"

Bonjour à tous,
Je viens d'installer Ubuntu et j'essaie de compiler un programme tout simple.
J'ai chargé la bibliothèque BuildEssential puis je tape sur la ligne de commande gcc test.c -o test.
Il affiche alors :
" /usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status "

Pour info : mon programme
#include <stdio.h>

int main(void)
{
printf("salut");
return 0;
}


Merci d'avance

Hors ligne

#2 Le 03/12/2010, à 15:04

yannzbig

Re : problème lors de la compilation "undefined reference to main"

zewanderer a écrit :

Bonjour à tous,
Je viens d'installer Ubuntu et j'essaie de compiler un programme tout simple.
J'ai chargé la bibliothèque BuildEssential puis je tape sur la ligne de commande gcc test.c -o test.
Il affiche alors :
" /usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status "

Pour info : mon programme
#include <stdio.h>

int main(void)
{
printf("salut");
return 0;
}


Merci d'avance

Essaye:

gcc -o test test.c

#3 Le 04/12/2010, à 20:43

jofab

Re : problème lors de la compilation "undefined reference to main"

Salut,
je suis désolé je ne sais pas ce qui ne va pas pour ton probleme d'edition de liens mais au moins dans ton code , remplace
printf("salut");
par
printf("salut\n");
ou
printf("salut"); fflush(stdout);
Les I/O sont bufferisees en c et, si tu reussi à compiler ton prog, il n'affichera rien à l'execution car tu ne lui demandes pas de flusher les buffers en sortie...

Hors ligne

#4 Le 04/12/2010, à 21:32

lann

Re : problème lors de la compilation "undefined reference to main"

et si tu remplaces

int main(void)

par

int main( int argc, const char* argv[] )

?

Hors ligne

#5 Le 04/12/2010, à 22:39

grim7reaper

Re : problème lors de la compilation "undefined reference to main"

@zewanderer : Chez moi ça fonctionne très bien. Tu compiles avec quelle commande ?

@jofab : Si c'est une chaîne sans formatage, la fonction puts est plus juste d'un point de vue sémantique.

@lann : inutile, les 2 prototypes sont standards, aucune raison que l'un fonctionne mieux que l'autre.

Hors ligne

#6 Le 05/12/2010, à 23:26

Lyaskator

Re : problème lors de la compilation "undefined reference to main"

Ça ne vient pas de ton programme c'est sûr, je l'ai compilé chez moi sans aucun problème.

Ça n'a peut-être aucun rapport mais cette personne a le même message d'erreur.

Ça n'a peut-être aucun rapport non plus, mais j'ai vu cette page de bug dont le message d'erreur est similaire au tiens.
Tu es sous Maverick Meerkat ?

Dernière modification par Lyaskator (Le 05/12/2010, à 23:30)

Hors ligne

#7 Le 06/12/2010, à 00:02

Le Farfadet Spatial

Re : problème lors de la compilation "undefined reference to main"

Salut à tous !

   D'accord avec Grim7reaper : le code et la ligne de commande sont parfaitement valables, ce n'est pas là qu'il faut chercher. Soit le code suivant :

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

int main (void) {
  printf("Salut à tous !\n");
  return EXIT_SUCCESS;
}  /* main */

   Chez moi, voici le résultat obtenu :

$ gcc -ansi -pedantic -W -Wall zewanderer.c -o zewanderer
$ ./zewanderer 
Salut à tous !

   Zewanderer, j'aimerais connaître la version de GCC que tu utilises :

$ gcc -v

   Chez moi, voilà ce que j'obtiens :

$ gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5

   À bientôt.

Le Farfadet Spatial

Hors ligne

#8 Le 07/12/2010, à 19:35

jofab

Re : problème lors de la compilation "undefined reference to main"

grim7reaper a écrit :

@zewanderer : Chez moi ça fonctionne très bien. Tu compiles avec quelle commande ?

Oui ca doit fonctionner, le code est correct, c'est l'edition de lien qui foire

grim7reaper a écrit :

@jofab : Si c'est une chaîne sans formatage, la fonction puts est plus juste d'un point de vue sémantique.

Ok mais dans la version initiale ca ne devait meme pas fonctionner

grim7reaper a écrit :

@lann : inutile, les 2 prototypes sont standards, aucune raison que l'un fonctionne mieux que l'autre.

+1

Essayer de compiler sans lancer l'edition de lien puis essaye de faire toi meme l'edition de lien.

Hors ligne

#9 Le 07/12/2010, à 19:52

grim7reaper

Re : problème lors de la compilation "undefined reference to main"

jofab a écrit :
grim7reaper a écrit :

@jofab : Si c'est une chaîne sans formatage, la fonction puts est plus juste d'un point de vue sémantique.

Ok mais dans la version initiale ca ne devait meme pas fonctionner

Je serai curieux de savoir pourquoi puts ne fonctionnerait pas ici ?

Dernière modification par grim7reaper (Le 07/12/2010, à 19:54)

Hors ligne

#10 Le 08/12/2010, à 20:09

jofab

Re : problème lors de la compilation "undefined reference to main"

grim7reaper a écrit :
jofab a écrit :
grim7reaper a écrit :

@jofab : Si c'est une chaîne sans formatage, la fonction puts est plus juste d'un point de vue sémantique.

Ok mais dans la version initiale ca ne devait meme pas fonctionner

Je serai curieux de savoir pourquoi puts ne fonctionnerait pas ici ?

Je me suis mal expliqué :
Oui puts fonctionne et est plus adapté dans ce cas la
Je voulais juste dire que ma correction visait a avoir un code qui fonctionne (ce qui n'est pas le cas dans la version initiale)  sans la pretention d etre optimal...

Hors ligne

#11 Le 08/12/2010, à 20:21

Le Farfadet Spatial

Re : problème lors de la compilation "undefined reference to main"

Salut à tous !

jofab a écrit :

Je voulais juste dire que ma correction visait a avoir un code qui fonctionne (ce qui n'est pas le cas dans la version initiale)

   Le code donné par Zewanderer dans son premier message est correcte et fonctionne. Le problème ne vient pas du code.

   À bientôt.

Le Farfadet Spatial

Hors ligne

#12 Le 09/12/2010, à 13:53

jofab

Re : problème lors de la compilation "undefined reference to main"

Le Farfadet Spatial a écrit :

Salut à tous !

jofab a écrit :

Je voulais juste dire que ma correction visait a avoir un code qui fonctionne (ce qui n'est pas le cas dans la version initiale)

   Le code donné par Zewanderer dans son premier message est correcte et fonctionne. Le problème ne vient pas du code.

   À bientôt.

Le Farfadet Spatial

L'erreur qu'il rencontre est un probleme d'edition de lien, c'est pour cela que je suggerais de dissocier la compilation et l'edition de liens, pour voir s'il n'y a pas un pb de chemin ou qqc lors de la derniere etape...

En revanche ce que je soulignais au debut, c'est que son programme, meme s'il est syntaxiquement correct (et donc devrait se compiler correctement) contient une petite erreur car il envoie des infos sur la sortie std sans flusher cette meme sortie, je suggerais donc l'ajout d'un \n ou d'un fflush(stdin) car sinon, à l'execution, son programme risque de ne rien afficher...

ps : tu as verifie que tu n'as pas des caracteres spéciaux invisiblse mais qui foutent la grouille. Tu n'as pas copier/coller ce petit programme depuis un pdf par exemple ?

Rien de plus...

Hors ligne

#13 Le 09/12/2010, à 13:54

jofab

Re : problème lors de la compilation "undefined reference to main"

jofab a écrit :

ou d'un fflush(stdin)

fflush(stdout) est un peu mieux dans ce cas
big_smile

Hors ligne

#14 Le 09/12/2010, à 16:46

grim7reaper

Re : problème lors de la compilation "undefined reference to main"

jofab a écrit :

ps : tu as verifie que tu n'as pas des caracteres spéciaux invisiblse mais qui foutent la grouille. Tu n'as pas copier/coller ce petit programme depuis un pdf par exemple ?

Généralement, ce type d'erreur surgit à la compilation et non pas à l'édition des liens.

jofab a écrit :

ou d'un fflush(stdin)

fflush(stdout) est toujours mieux
big_smile

Fixed.
Étant donné que fflush(stdin) a un comportement indéterminé…

Dernière modification par grim7reaper (Le 09/12/2010, à 16:46)

Hors ligne

#15 Le 09/02/2017, à 01:06

Massyl

Re : problème lors de la compilation "undefined reference to main"

Enfaite ton problème se résume uniquement au fait que tu n'as pas enregistré ton texte avant de le compiler lol:lol::lol:

RIEN DE PLUS

Hors ligne

#16 Le 27/02/2017, à 14:48

pires57

Re : problème lors de la compilation "undefined reference to main"

Depuis 7 ans j'ose espérer pour lui qu'il a résolu son problème ... joli déterrage de topic ...


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#17 Le 03/03/2018, à 15:42

nonoduweb

Re : problème lors de la compilation "undefined reference to main"

Massyl a écrit :

Enfaite ton problème se résume uniquement au fait que tu n'as pas enregistré ton texte avant de le compiler lol:lol::lol:

RIEN DE PLUS

AH AH AH AH AH ! Excellent !
Je suis tombé sur ce topic parce que j'avais la même erreur et c'était exactement ça!

J'espère aussi que le gars a résolu son problème au bout de toutes ces années!

Hors ligne