ld找不到给定的库-L

qwe*_*iop 3 makefile ld

我有一个目标文件main.o,需要将其链接到共享库./libsvm/libsvm.so.2。我有以下Makefile,但它对我不起作用。已在中指定库路径,-L./libsvmgcc -lsvm仍找不到共享库(libsvm.so.2)。

这是我的Makefile:

CC      = g++ -g
CFLAGS  = -Wall
HEADERS = -I./libsvm
OBJ     = main.o
LIBS    = -L./libsvm

all: lib $(OBJ)
     $(CC) $(LIBS) -lsvm $(OBJ) -o main

%.o: %.c
     $(CC) $(CFLAGS) $(HEADERS) -c -o $@ $<

lib:
     cd libsvm; make
Run Code Online (Sandbox Code Playgroud)

直接将它们链接起来就可以了,例如

ld main.o libsvm/libsvm.so.2 -o main
Run Code Online (Sandbox Code Playgroud)

我想知道Makefile中有什么问题。错误消息如下

g++ -g -L./libsvm -lsvm main.o -o main 
ld: library not found for -lsvm 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)

Val*_*itz 5

-lsvm表示使用文件svm.so

但是您的库文件名为svm.so.2。(版本2

因此,可以使用以下命令重命名或建立符号链接

ln -s svm.so.2 svm.so
Run Code Online (Sandbox Code Playgroud)

现在,makefile应该可以工作了。