2016-05-09 1 views
0

Je suis en cours de référence non défini pour fonctionner pendant la compilation. Ceci est mon programme:Programme GCC référence non définie à la fonction (plusieurs dossiers)

main.c:

#include <stdio.h> 
#include "SSD/ssd.h" 

int main(void) 
{ 
    printf("%d\n",f()); 
    return 0; 
} 

SSD/ssd.h:

#ifndef SSD_H 
#define SSD_H 

int f(); 

#endif // SSD_H 

SSD/ssd.c:

#include "ssd.h" 

int f(){ 
    return 4; 
} 

fichiers ssd.h et ssd.c sont dans le dossier SSD et le fichier main.c et le dossier SSD sont dans le même dossier. Lors de la compilation mais je reçois:

[[email protected] Lab5]$ gcc main.c -o run 
/tmp/cc9X2i1H.o: In function `main': 
main.c:(.text+0xa): undefined reference to `f' 
collect2: error: ld returned 1 exit status 

Je suis en Fedora23

+3

gcc main.c SSD/ssd.c -o exécuter - Vous devez compiler tous vos fichiers C, y compris l'en-tête ne compile pas le fichier C! – Joe

Répondre

2

Vous construisez seulement avec main.c, même si SSD/ssd.c contient code.

Inclure dans votre processus de construction:

gcc SSD/ssd.c main.c -o run