0

Linux で c ファイルを実行するために使用される makefile について質問があります。

私は次のメイクファイルを書きました。目的は、プログラムのadt(スペース、セット、配置、および平面)に関するテストを構築し、mtm_space(文字列を定義した後の最初のブロック)と呼ばれる別のプログラムをチェックすることです

CC=gcc
OBJS=plane.o set.o space.o main. decoding.o arrangement.o
DEBUG=# insert -g
CFLAGS=-std=c99 -Wall -Werror $(DEBUG) -pedantic-errors/
-DNDEBUG -L. lmtm2

space : $(OBJS) 
    $(CC) $(CFLAGS) -o $@ $^

arrangement.o: arrangement.c arrangement.h set.h plane.h
decoding.o: decoding.c space.h list.h arrangement.h set.h plane.h \
mtm_ex2.h
plane.o: plane.c plane.h
main.o: main.c space.h list.h arrangement.h set.h plane.h mtm_ex2.h \
decoding.h
set.o: set.c set.h
space.o: space.c space.h list.h arrangement.h set.h plane.h
mtm_space.o: mtmspace.c arrangement.h plane.h list.h set.h space.h mtm_ex2.h/
decoding.h

OBJS1=$(OBJS) space_test.o 

space_test : $(OBJS1)
    $(CC)  $(CFLAGS) -o $@ $^

arrangement.o: arrangement.c arrangement.h set.h plane.h
main.o: main.c space.h list.h arrangement.h set.h plane.h mtm_ex2.h \
 decoding.h
plane.o: plane.c plane.h
set.o: set.c set.h
space.o: space.c space.h list.h arrangement.h set.h plane.h
space_test.o: ./tests/space_test.c space.h list.h arrangement.h set.h plane.h

OBJS2= plane.o set.o

plane_test :$(OBJS2)
    $(CC)  $(CFLAGS) -o $@ $^

plane.o: plane.c plane.h
set.o: set.c set.h
plane_test.o: ./tests/plane_test.c set.h plane.h

OBJS3= set.o

set_test :$(OBJS3)
    $(CC)  $(CFLAGS) -o $@ $^

set.o:set.c set.h
set_test.o: ./tests/set_test.c set.h

OBJS4= plane.o set.o arrangement.o

arrangement_test :$(OBJS4)
    $(CC)  $(CFLAGS) -o $@ $^

arrangement.o: arrangement.c arrangement.h set.h plane.h
plane.o: plane.c plane.h
set.o: set.c set.h
arrangement_test.o: ./tests/arrangement_test.c arrangement.h set.h plane.h

しかし、たとえば私が使用しようとすると

 >make space_test

すべてがこのように見える多くのエラーを返します

space_test.c:(.text+0x5fc): 「spaceCreate」への未定義の参照

私が使用したさまざまな機能のすべてについて。

なぜこれが起こっているのかを理解するのを手伝ってくれる人はいますか? プログラムはすべてEclipseで正常に実行されますどうもありがとう

4

0 に答える 0