我正在尝试使用给定的 Makefile 为学校项目运行单元测试,但我遇到了一个我不知道如何解决的错误:
以下是我认为 Makefile 中的相关部分:
CC=gcc
SDL=/usr/include/SDL2
CFLAGS_D=-g -Wall -Wextra -pedantic -O0 -D_REENTRANT -D_DEBUG -DSTRICT_THREADING -I$(SDL)
CFLAGS=-Wall -Wextra -O2 -D_REENTRANT -I$(SDL)
LD=gcc
LDFLAGS=-lm -lrt -L$(SDL) -lSDL2 -lSDL2_ttf -lSDL2_gfx -ldl -lpthread
LDFLAGS_D= $(LDFLAGS) #-lmcheck
LDFLAGS_T=-lm -lrt -L. -lt
OBJECTS= \
point.o graphe.o \
parse_util.o graphe_parse.o \
liste_noeud.o dijkstra.o \
viewport.o \
graphrep.o window.o app.o
OBJECTS_D= $(subst .o,.do,$(OBJECTS))
VALGRIND=valgrind --leak-check=full -s
runtest_liste_noeud: test_liste_noeud
@echo "================= [Test de liste_noeud] ================="
./test_liste_noeud
test_liste_noeud.o: test_liste_noeud.c
$(CC) $(CFLAGS_D) -c $< -o $@
test_liste_noeud: test_liste_noeud.o graphe.do point.do liste_noeud.do
$(LD) $^ -o $@ $(LDFLAGS_T)
%.o: %.c %.h
$(CC) $(CFLAGS) -c $< -o $@
%.do: %.c %.h
$(CC) $(CFLAGS_D) -c $< -o $@
但是,当我尝试执行时
make test_liste_noeud
我遇到以下错误:
gcc test_liste_noeud.o graphe.do point.do liste_noeud.do -o test_liste_noeud -lm -lrt -L. -lt
/usr/bin/ld: cannot find -lt: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [Makefile:97: test_liste_noeud] Error 1
我不知道如何解决这个问题,有人知道解决这个问题的方法吗?
我尝试在
/usr/bin/ld
中查找 -lt,但确实找不到它,我是否缺少库?
我还通过 ssh/scp 在我学校的计算机上尝试了它,它应该可以工作,但遇到了同样的错误。
针对可能遇到相同问题的任何人进行更新: 我设法解决了它: -L 定位 -lt 应该使用给定路径找到所需库的位置。这里
-L.
表示图书馆位于./
。
-lt 表示需要的库是libt.a
我可以将 libt.a 移动到 ./ 或将编译选项更改为
-L<path> -lt