我有一个目标文件main.o
,需要将其链接到./libsvm/libsvm.so.2
的共享库。我有以下Makefile但它对我不起作用。已在-L./libsvm
中指定了库路径,但gcc -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
如果直接链接它们就可以了,如
ld main.o libsvm/libsvm.so.2 -o main
我想知道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
答案 0 :(得分:4)
-lsvm表示使用文件svm.so
但您的库文件名为svm.so.2。 (Version 2)
因此要么重命名要么与
建立符号链接ln -s svm.so.2 svm.so
现在makefile应该可以工作。