GCC程序未定义函数引用(多个文件夹)

时间:2016-05-09 09:30:09

标签: c gcc linker undefined-reference

我在编译期间遇到了对函数的未定义引用。这是我的计划:

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位于同一文件夹中。在编译期间,我得到:

[miku@MikuToshiba 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

我正在运行Fedora23

1 个答案:

答案 0 :(得分:2)

您只能使用main.c进行构建,即使SSD/ssd.c也包含代码。

将其包含在您的构建过程中:

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