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

标签 c gcc linker undefined-reference

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

主.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/

相关文章:

linker - Lua编译链接错误

.net - native VC++ 6 应用程序中的托管 DLL

你能解释一下这段代码吗?

gcc - 如何在 x86 和 x86_64 上使用 Gcc 4.6.0 libquadmath 和 __float128

c - 如何将汇编文件(.s 文件)链接到 C 程序

Conan 无法找到指定设置、选项和依赖项的某个包

c - 地址空间布局随机化 ( ALSR ) 和 mmap

c - 无法识别的仿真模式 : elf_i386 on MinGW32

c++ - 我可以在 C 程序中使用 C++ 模板库吗?

c - 运行时检查失败 #2 - 变量 'char' 周围的堆栈已损坏