将时间“未定义引用”链接到“错误”

时间:2010-06-29 10:52:31

标签: c makefile variables extern undefined-reference

我很难写makefile。我有使用extern变量的经验,当我在不使用makefile的情况下构建项目时,我绝对没有错误,我可以运行该程序。但是从我编写makefile来构建项目开始,我收到了undefined reference to个错误。

我有超过3个文件,但为了简单起见,我将在这里使用3个文件来解释设置。

/************Project********/
/* main.c */
int x;
main()
{
...

}

/* File1.c*/
extern int x;
fn1()
{
 ...
 }

/* File2.c*/
extern int x;
fn2()
{
 ...
 }
/*******************************/

使用makefile时,在指向File1.c和File2.c的链接时间内出现undefined reference to错误?

我是否犯了eclipse自行修复的错误(当没有使用makefile时)以及使用makefile时哪些表面?

我的最终makefile看起来像这样 -

OBJ1 = algorithm / main.o algorithm / File1.o algorithm / File2.o

all: final

final: main.o algorithm/File1.o algorithm/File2.o
 @echo "Linking - making Final"
 $(CC) -o $@ $(OBJ1)

1 个答案:

答案 0 :(得分:2)

您的Makefile中存在差异。您的final目标取决于main.o,而您将$(OBJ1)提供给链接器,其中包含algorithm/main.o