我在编译期间遇到了未定义的函数引用。这是我的程序:
主.c:
#include <stdio.h>
#include "SSD/ssd.h"
int main(void)
{
printf("%d\n",f());
return 0;
}
固态硬盘/固态硬盘.h:
#ifndef SSD_H
#define SSD_H
int f();
#endif // SSD_H
固态硬盘/固态硬盘.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
最佳答案
您只能使用 main.c
构建,即使 SSD/ssd.c
也包含代码。
将其包含在您的构建过程中:
gcc SSD/ssd.c main.c -o run
关于c - GCC 程序未定义对函数的引用(多个文件夹),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112162/