我正在尝试编译一个使用 header 的主文件。我的目录中有所有文件:card.c、deck.c header.h 和 main.c
它似乎无法识别源文件和头文件,因此我的编译命令丢失了一些东西。谢谢
最佳答案
您有源文件card.c
、deck.c
和main.c
。可以合理地假设 card.c
和 deck.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/