单独构建C程序

单独构建C程序,c,c-preprocessor,C,C Preprocessor,我有两个C文件(第一个文件需要另一个) 我应该使用#包括“XXX.C”,但我如何单独创建.obj文件,然后连接它(类似于Borland的项目)?我读了一些关于链接a,b命令的内容,但它不起作用,我找不到任何参考 谢谢大家! 不,您不应该使用#include“XXX.c”。只应包括标题;代码文件应该彼此分开编译 具体操作方式取决于编译器,但通常您只需将文件逐个列出给编译器,如下所示: gcc main.c helpers.c functions.c 不,您不应该使用#include“XXX.c”

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

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


谢谢大家!

不,您不应该使用
#include“XXX.c”
。只应包括标题;代码文件应该彼此分开编译

具体操作方式取决于编译器,但通常您只需将文件逐个列出给编译器,如下所示:

gcc main.c helpers.c functions.c

不,您不应该使用
#include“XXX.c”
。只应包括标题;代码文件应该彼此分开编译

具体操作方式取决于编译器,但通常您只需将文件逐个列出给编译器,如下所示:

gcc main.c helpers.c functions.c
对于所需的每个对象文件,都应该有一个.h()和(至少一个).c(带实现)文件

有关头文件的详细信息,请转到

那么你只需要做:

#include "XXX.h"
包括头文件,而不是.c文件

对于所需的每个对象文件,都应该有一个.h()和(至少一个).c(带实现)文件

有关头文件的详细信息,请转到

那么你只需要做:

#include "XXX.h"
包括头文件,而不是.c文件

你不应该使用#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上定义的函数。

您不应该使用#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上定义的函数。

您真的尝试打开任何搜索引擎吗?这是一个非常基本和普遍的问题。尝试搜索
ld
makefile
您是否真的尝试打开任何搜索引擎?这是一个非常基本和普遍的问题。尝试用标题搜索
ld
makefile
是我没有任何问题。它也适用于C文件,但我想单独构建它。我有代码::Block。我尝试寻找makefile或ld…是的,标题我没有任何问题。它也适用于C文件,但我想单独构建它。我有代码::Block。我尝试查找makefile或ld。。。