C /usr/bin/ld: 找不到 -lt: 没有这样的文件或目录

问题描述 投票:0回答:1

我正在尝试使用给定的 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 在我学校的计算机上尝试了它,它应该可以工作,但遇到了同样的错误。

c gcc makefile
1个回答
0
投票

针对可能遇到相同问题的任何人进行更新: 我设法解决了它: -L 定位 -lt 应该使用给定路径找到所需库的位置。这里

-L.
表示图书馆位于
./

-lt 表示需要的库是libt.a

我可以将 libt.a 移动到 ./ 或将编译选项更改为

-L<path> -lt

© www.soinside.com 2019 - 2024. All rights reserved.