【问题标题】:c - compile main file with source files and header [closed]c - 用源文件和头文件编译主文件[关闭]
【发布时间】:2016-10-06 21:02:56
【问题描述】:

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

问题是当我执行 gcc main.c 时,我得到了这个:

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

【问题讨论】:

  • 您用于编译程序的确切命令是什么?
  • gcc main.c。我需要先 gcc 头文件和其他源文件吗?
  • 你的“编译命令”是什么?
  • 您需要将文本发布为文本,而不是图像!

标签: c compilation


【解决方案1】:

您有源文件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 的名称。

【讨论】:

    【解决方案2】:

    您应该将所有 .c 文件作为输入输入到gcc。您可以通过 Google 找到大量 gcc 文档。例如:http://www.network-theory.co.uk/docs/gccintro/gccintro_11.html

    【讨论】:

    • 知道了。感谢您提供此链接。我做了 gcc main.c deck.c card.c 和输出文件规则完美的 ./main
    猜你喜欢
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多