通过gcc在c编译中获取未定义的引用错误

问题描述 投票:-2回答:1

已经修好了

我有5个文件:cdouble.c cdouble.h cmatrix.c cmatrix.h和main.c

在我的cdouble.c中我有:

#include "cdouble.h"

在我的cmatrix.c中我有:

#include "cmatrix.h"

(在我的cmatrix.h文件中,我得到了:#include "cdouble.h"

在我的主文件中,我有:

#include "cmatrix.h"

我需要在我大学的unix(?)服务器上编译它。我试过了:

gcc -c cmatrix.c
gcc cmatrix.o main.c

但我得到了许多“未定义的参考错误”

$ gcc -c cmatrix.c

gcc cmatrix.o main.c:/tmp/ccZD6esL.o:在函数ishermitian中: main.c :(。text + 0x7b):对cConj的未定义引用 main.c :(。text + 0x8b):对getCDoubleImag的未定义引用 main.c :(。text + 0xa0):对getCDoubleReal的未定义引用 main.c :(。text + 0xde):对getCDoubleImag的未定义引用 main.c :(。text + 0xef):对getCDoubleImag的未定义引用 main.c :(。text + 0x111):对getCDoubleReal的未定义引用 main.c :(。text + 0x122):对getCDoubleReal的未定义引用 /tmp/ccZD6esL.o:在函数scancdouble中: main.c :(。text + 0x203):对newCDouble的未定义引用 /tmp/ccZD6esL.o:在函数main中: main.c :(。text + 0x2d8):对getCDoubleImag的未定义引用 main.c :(。text + 0x2fc):对getCDoubleReal的未定义引用 collect2:错误:ld返回1退出状态

c gcc linker-errors undefined-reference
1个回答
0
投票

您需要编译cdouble.c并链接其.o文件。例如:

gcc -c cmatrix.c
gcc -c cdouble.c
gcc main.c cmatrix.o cdouble.o

或者,更简单地说:

gcc main.c cmatrix.c cdouble.c
© www.soinside.com 2019 - 2024. All rights reserved.