Probleme de main

Probleme de main - C - Programmation

Marsh Posté le 19-12-2005 à 15:56:41    

Bonjour a tous !
 
Voila mon probleme, j'ai un programme qui compile et fonction nickel sous NetBSD, et je me suis donc dis que d'avoir une version Linux, qui marche serai pas mal aussi !
 
Bref, j'ai fait les modif necessaire, et maintenant lors du linkage j'ai un beau message d'erreur, et je ne vois pas comment le resoudre.
Le voici :

Code :
  1. /usr/lib/gcc/i486-linux-gnu/4.0.2/../../../../lib/crt1.o: In function `_start':
  2. ../sysdeps/i386/elf/start.S:115: undefined reference to `main'
  3. collect2: ld returned 1 exit status


 
Donc si vous voyez d'ou cela peut venir je suis preneur, surtout que cela marche sans probleme sous NetBSD...
 
Merci d'avance !

Reply

Marsh Posté le 19-12-2005 à 15:56:41   

Reply

Marsh Posté le 19-12-2005 à 16:00:47    

Ca vient de la ligne 67 de ton fichier source. [:daria]

Reply

Marsh Posté le 19-12-2005 à 16:13:04    

jeu de main, jeu de vilain [:pingouino]
 
indice : au moment de l'édition des liens, il ne trouve pas le symbole main ...

Reply

Marsh Posté le 19-12-2005 à 16:16:41    

ce qui voudrai dire que je n'ai pas de main... or non j'ai un main, sinon j'aurai déjà eu la meme erreur sous NetBSD ce qui n'est pas le cas.
 
Le probleme c'est que je ne vois absolument pas d'ou viens ce main manquant...

Reply

Marsh Posté le 19-12-2005 à 16:19:08    

et bien, ne sachant pas quel est le programme et n'ayant rien d'autre qu'une maigre erreur à nous mettre sous la dent, tu comprendras bien que nous non plus

Reply

Marsh Posté le 19-12-2005 à 16:22:56    

je sais bien :D
 
mais c'est plutot un gros programme je vais pas tout poster :D
 
bref dans mon fichier main.c il y a plusieurs fonctions, dont la fonction main que voici :
 

Code :
  1. int        main(int argc, char *argv[])
  2. {
  3.    if (!is_valid_usage(argc, argv))
  4.         mu_usage();
  5.    else
  6.      my_parse(argc, argv)
  7.    return 0;
  8. }


 
voila mon main, en fait je ne sais pas non plus quel bout de code donner.. y'a trop de chose..
 
est-ce que cela peut venir d'un fichier autre que celui de mon programme, car le message d'erreur de precise pas que cela vient d'un de mes fichier... mais dans ce cas que faire...


Message édité par StrAbZ le 19-12-2005 à 16:28:44
Reply

Marsh Posté le 19-12-2005 à 16:29:21    

tu utilises un makefile pour ta compilation ?
 
parce que c'est peut-être simplement ton fichier objet contenant ton main qui n'est pas lié avec le reste

Reply

Marsh Posté le 19-12-2005 à 16:32:21    

j'utilise bien un makefile, que voici :
 

Code :
  1. include ../Makefile.rules
  2. CFLAGS = $(IPATH)
  3. LDFLAGS = $(LPATH)
  4. SRC =   my_parse.c      \
  5.         recalage.c      \
  6.         temp.c          \
  7.         temp2.c         \
  8.         print_fn.c      \
  9. #       print_imgs.c    \
  10.         main.c
  11. NAME = ../recalage
  12. OBJ = $(SRC:.c=.o)
  13. INCL =  my_parse.h \
  14.         recalage.h
  15. LIBSTATIC = matrix_`uname -s`
  16. IPATH = -I. -I..
  17. LPATH = -L. -L..# `sdl-config --libs`
  18. STRIP = /usr/bin/strip
  19. RM = /bin/rm -f
  20. CC_COM = $(CC) $(OBJ) $(TARGET_FLAGS) $(LDFLAGS) -l$(LIBSTATIC) -lm -o $(NAME)
  21. all: $(NAME)
  22. $(NAME): $(SRC) $(INCL) $(OBJ)
  23.         cd matrix && make
  24.         $(CC_COM)
  25. debug: $(SRC) $(INCL) $(OBJ)
  26.         cd matrix && make
  27.         $(CC_COM) -g
  28.         gdb $(NAME)
  29. clean:
  30.         cd matrix && make clean
  31.         -$(RM) $(OBJ)
  32.         -$(RM) *~ \#* *core
  33. distclean: clean
  34.         -$(RM) $(NAME)
  35.         -$(RM) *.a
  36. .c.o:
  37.         $(CC) $(TARGET_FLAGS) $(CFLAGS) -c $< -g


 
un peu gros, enfin y'a pire ^^

Reply

Marsh Posté le 19-12-2005 à 17:41:42    

tu as essayé de passer le main.c sur la ligne du dessus, dans ton makefile ? j'aurais peur que ton commentaire te pourrisse la vie [:pingouino]
 
(ceci dit, j'suis loins d'être expert en makefiles :o)

Message cité 1 fois
Message édité par theshockwave le 19-12-2005 à 17:43:04
Reply

Marsh Posté le 19-12-2005 à 18:57:31    

autre tentative : tu n'aurais pas des conditions (#ifdef ...) sur le système masquant ton main lorsque tu compiles sous un autre OS que BSD ? (sait-on jamais ...)
 
le problème peut venir d'un peu partout, hein :/


Message édité par theshockwave le 19-12-2005 à 18:58:17
Reply

Marsh Posté le 19-12-2005 à 18:57:31   

Reply

Marsh Posté le 19-12-2005 à 19:05:53    

theshockwave a écrit :

tu as essayé de passer le main.c sur la ligne du dessus, dans ton makefile ? j'aurais peur que ton commentaire te pourrisse la vie [:pingouino]
 
(ceci dit, j'suis loins d'être expert en makefiles :o)


 
Et bien pourtant tu l'es.... je n'aurai jamais pensé que le commentaire bousille le reste, cela compile et link sans probleme maintenant !
 
Merci beaucoup !!!

Reply

Marsh Posté le 19-12-2005 à 19:07:39    

C'est un problème de buffer.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed