c - 编译带有源文件和头文件的主文件

标签 c compilation

我正在尝试编译一个使用 header 的主文件。我的目录中有所有文件:card.c、deck.c header.h 和 main.c enter image description here

问题是,当我执行 gcc main.c 时,我得到: enter image description here

它似乎无法识别源文件和头文件,因此我的编译命令丢失了一些东西。谢谢

最佳答案

您有源文件card.cdeck.cmain.c。可以合理地假设 card.cdeck.c 各自定义函数,其中至少有一个由 main.c 中的某些内容调用>,否则就不需要 header.h。据推测,您的链接错误中指定的函数就在其中。

命令

gcc main.c

尝试编译main.c中的代码并将其链接起来形成一个完整的程序,但这对于一个完整的程序来说是不够的,因为一些需要的函数是在其他中定义(实现)的源文件。这就是链接器所提示的。

如果您想将 main.c 编译为目标文件但不链接它,那么您需要 -c 选项:

gcc -c main.c

如果您想通过运行一次 gcc 构建一个完整的程序,那么您必须指定所有需要的源:

gcc main.c deck.c card.c

在后一种情况下,您可能还需要使用 -o 选项为可执行文件指定与 a.out 不同的名称。

关于c - 编译带有源文件和头文件的主文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39905577/

相关文章:

c - 如何将作为宏操作结果的宏字符串化?

c - 通过在编译时替换静态符号来测试嵌入式代码

scala - 如何在 Scala 中参数化具有继承类型的函数

c - 程序何时会受益于预取和非临时加载/存储?

c - scanf ("%d",&变量);当我在一些空格键后单击 Enter 后,整个程序正确运行时,即使按下空格键也不会停止

c - 链接列表 : Dequeue correctly returns popped data, 但尝试使用打印时出现段错误

c - 大小为 LONG_MAX 的数组

compilation - rdmd 命令无法识别

c# - 为什么编译器删除未使用的结构而不是类

xcode - 你如何在 Xcode 4.0 中使用编译源?