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)
但这似乎不起作用,它说我已经有一个预编译头了。我尝试在网上寻找答案,我知道它一定很简单,但我运气不佳。这里有什么问题呢?
不要编译头文件。头文件应该包含在源文件中(使用#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。