在 C 中,如何编译然后创建一个带有头文件和两个 c 文件的可执行文件?

Mig*_* J. 1 c macos gcc compilation header

我一共有三个C文件。一个是头 [ .h] 文件,两个是源 [ .c] 文件。

.h文件被调用encryption.h,对应的源文件为encryption.c. 有encryption.c逻辑,但没有main()功能。我的第二个 c 文件名为main.c. 我有一个main()从 调用方法的函数encryption.c

我正在 Mac OSx 上的终端中编译这些文件。我对如何编译它感到困惑,我尝试了以下方法:

gcc -c main.c
gcc -c encryption.c
gcc -c encryption.h
gcc main.o encryption.o encryption.g.gch -o encrypt
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用,它说我已经有一个预编译头了。我尝试在网上寻找答案,我知道它一定很简单,但我运气不佳。这里有什么问题呢?

Sou*_*osh 5

不要编译头文件。头文件应该包含在源文件中(使用#include指令,在 中c)。只需编译源文件并将它们链接在一起即可。就像是

gcc -c main.c
gcc -c encryption.c
gcc main.o encryption.o -o encrypt
Run Code Online (Sandbox Code Playgroud)

或者,为了简写,

gcc main.c encryption.c -o encrypt
Run Code Online (Sandbox Code Playgroud)

注意:如果您在编译时担心头文件是否存在(或不存在),请使用选项检查每个源文件的预处理输出gcc -E

  • 基本上,头文件的要点是,每个包含“#include”的代码文件都知道其中声明的函数如何工作。还了解“#defines”和类型... (4认同)