2016-05-26 48 views
1

Es ist seltsam, ich habe diesen Fehler:Ist das korrekt?

/tmp/ccq0e479.o:main.c:(.text+0x1a): undefined reference to 
`ft_putchar' collect2: error: ld returned 1 exit status 

main.c:

#include "biblio.h" 

int main(int argc, char** argv){ 

     ft_putchar(argv[1]); 
     return 0; 

} 

ft_putchar.c:

#include <stdio.h> 
#include "biblio.h" 

    void ft_putchar (char* str){ 
      int i = 0; 
      while (str[i] != '\0'){ 
        write(1,str[i], 1); 
        i++; 
      } 
      write(1,'\0', 1); 

    } 

biblio.h

#ifndef biblio_ft 
#define biblio_ft 

void ft_putchar(char*); 

#endif 
+2

Wie kompilieren Sie? –

+0

Vielleicht verursacht der Wächter '#ifndef biblio_ft' es. Es ist unnötig, da Sie einen Funktionsprototyp beliebig oft deklarieren können, sofern sie alle gleich sind. –

+0

gcc main.c ich setze einfach void ft_putchar (char *); in meinem .h so? –

Antwort

7

Kompilieren nur main.c ist nicht genug, müssen Sie beide Dateien kompilieren:

gcc main.c ft_putchar.c -o myprog 

oder

gcc -c main.c 
gcc -c ft_putchar.c 
gcc main.o ft_putchar.o -o myprog 

Weitere Informationen: Gcc tutorial

+0

wtf ?? auch wenn ich eine .h ?? –

+4

Ja, biblio.h sagt dem Compiler nicht, wo er den Code finden soll, er sagt nur: irgendwo gibt es eine Funktion namens x und das ist der Prototyp –

Verwandte Themen