如何在 C 编程中将两个头文件和 3 个 c 文件链接到一个可执行文件中?

Posted

技术标签:

【中文标题】如何在 C 编程中将两个头文件和 3 个 c 文件链接到一个可执行文件中?【英文标题】:How do I link two header files and 3 c files into a single executable in C programming? 【发布时间】:2021-09-13 18:51:48 【问题描述】:

我被要求创建两个头文件,h1.h 和 h2.h;两个c文件,a1.c和a2.c;和一个主文件 mainfile.c。 a1 文件包含 h1 头文件,a2 包含 h2 头文件,mainfile 包含这两个头文件。 现在我想将它们链接在一起以获得一个可执行的 .exe 文件。

我知道如果只有 1 个头文件 (x.h) 和两个 c 文件(a1.c 和 a2.c)存在,我们可以使用:

gcc -c a1.c gcc -c a2.c gcc -o x_exe a1.o a2.o ./x_exe

谁能为我的问题提出相同格式的建议?

【问题讨论】:

【参考方案1】:

一般来说,您将每个 .c 文件编译成 .o 文件,然后将 .o 文件链接到可执行文件中。

因此,对于您的具体示例,您将按如下方式编译源文件:

gcc -c a1.c
gcc -c a2.c
gcc -c mainfile.c

并链接如下:

gcc -o x_exe a1.o a2.o mainfile.o

编译时无需担心头文件,除非它们与源代码位于不同的目录中,否则您将使用-I 选项指定该位置。

【讨论】:

谢谢,知道了。我把头文件和可执行文件混在一起了。【参考方案2】:

这个问题不应该通过询问你不理解的命令的魔法咒语来回答。您应该了解每个命令的作用,然后您可以自己编写它们。 gcc -c SomeName.c 将编译文件SomeName.c 并生成一个名为SomeName.o 的目标文件。编译包括读取包含在#include 语句中的文件,并将这些文件视为要编译的源代码的一部分。因此,头文件作为编译源文件的一部分进行处理。您无需为它们调整命令。

然后gcc -o OutputName Name1.o Name2.o Name3.o… 将列出的目标文件链接在一起并创建一个名为OutputName 的可执行文件。同样,不需要对头文件进行调整。

所以你在使用编译器命令时不需要关心头文件。 (当您使用make 或为您调用编译器的类似工具时,头文件将很重要。这是因为这些工具具有仅在创建相应目标文件后源代码发生更改时才重新编译源文件的功能。由于更改代码在头文件中可以更改生成的目标文件,这些工具需要知道源文件包含哪些头文件。)

【讨论】:

以上是关于如何在 C 编程中将两个头文件和 3 个 c 文件链接到一个可执行文件中?的主要内容,如果未能解决你的问题,请参考以下文章

C语言头文件的作用

在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库?

转载:Linux 下C编程常用的头文件

c语言中 如何删除文件和重命名文件,举个例子可以么

VC里 如何引用另一个工程的头文件?

Qtsocket编程问题 QSocketDevice在哪个头文件里?顺便,写这种程序要包含哪些头文件?