ld找不到-L给出的库

时间:2015-07-30 20:04:43

标签: makefile ld

我有一个目标文件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

1 个答案:

答案 0 :(得分:4)

-lsvm表示使用文件svm.so

但您的库文件名为svm.so.2。 (Version 2

因此要么重命名要么与

建立符号链接
ln -s svm.so.2 svm.so

现在makefile应该可以工作。