在 C 编程中,如何 link 将两个头文件和 3 个 c 文件合并为一个可执行文件?

How do I link two header files and 3 c files into a single executable in C programming?

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

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

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

任何人都可以为我的问题提出相同格式的建议吗?

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

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

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

和link如下:

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

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

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

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

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