2016-05-09 12 views
0

コンパイル中に関数への未定義参照が実行されています。これは私のプログラムです:GCCプログラム関数への未定義参照(複数のフォルダ)

の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; 
} 

ファイルssd.h ssd.cフォルダSSDにあり、ファイルmain.cとフォルダSSDは同じフォルダにあります。コンパイル中しかし、私が取得:

[[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 

私はあなたが唯一のSSD/ssd.cも同様のコードが含まれているにもかかわらず、main.cでビルドFedora23

+3

gccのmain.cのSSD/ssd.c -o実行する - あなたがCファイルをコンパイルしていないヘッダを含むすべてのCファイルをコンパイルする必要があります! – Joe

答えて

2

を実行していますよ。

は、あなたの構築プロセスでそれを含める:

gcc SSD/ssd.c main.c -o run 
関連する問題