单独构建C程序

时间:2012-09-27 14:47:10

标签: c c-preprocessor

我有两个C文件(第一个文件需要另一个文件)。

我应该使用#include "XXX.C",但我如何制作单独的.obj文件然后连接它(类似Borland的项目)?我读了一些关于link a, b命令的内容,但它不起作用,我找不到任何参考。

谢谢!

3 个答案:

答案 0 :(得分:4)

你不应该使用#include“XXX.C”。如果你想单独编译它。 你必须写一个“XXX.h”,其中包含你要调用的所有函数。

之后,您可以单独编译文件:

gcc -c YYY.c -o yyy.o
gcc -c XXX.c -o xxx.o

如果你想在一次通过中编译和链接:

gcc xxx.c yyy.c -o xxx

或者如果你想编译xxx.c并使用之前生成的目标文件:

gcc xxc.c yyy.o -o xxx

甚至:

gcc xxx.o yyy.o -o xxx

在最后一个例子中,gcc会调用链接器,因为没有可编译的源代码。

但如果您有两个或三个以上的文件,接下来要检查的是如何使用Makefile。

示例:

xxx.c:

#include "yyy.h"

int x(int a)
{
   return a + 1;
}

int main(int argc, char **argv)
{
   x(1);
   y(2);
   return 0;
}

yyy.c:

int y(int b)
{ 
   return b + 2;
}

yyy.h:

#pragma once
int y(int b);

可以单独编译:

gcc -c yyy.c -o yyy.o
gcc xxx.c yyy.o -o xxx

在此示例中,xxx.c调用yyy.c上定义的函数。

答案 1 :(得分:1)

不,你不应该使用#include "XXX.c"。只应包含标题;代码文件应该彼此分开编译。

它是如何完成的取决于您的编译器,但通常您只需将文件逐个列出到编译器,如下所示:

gcc main.c helpers.c functions.c

答案 2 :(得分:1)

您应该为每个目标文件提供.h(header, with declarations)和(至少一个).c(带实现)文件。

有关标题文件的详细信息,请转到here

然后你只需要这样做:

#include "XXX.h"

包含头文件,而不是.c文件!