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

时间:2017-12-30 11:56:32

标签: c gcc linker-errors undefined-reference

已经修好了thx

我有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退出状态

1 个答案:

答案 0 :(得分:0)

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

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

或更简单地说:

gcc main.c cmatrix.c cdouble.c