ld 找不到给定的库 -L
ld can't find library given -L
我有一个目标文件 main.o
,需要 link 它针对 ./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
如果直接link它们就可以工作,如
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
-lsvm 表示使用文件 svm.so
但是您的库文件名为 svm.so.2。 (Version 2)
所以要么重命名,要么用
创建一个符号link
ln -s svm.so.2 svm.so
现在 makefile 应该可以工作了。
我有一个目标文件 main.o
,需要 link 它针对 ./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
如果直接link它们就可以工作,如
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
-lsvm 表示使用文件 svm.so
但是您的库文件名为 svm.so.2。 (Version 2)
所以要么重命名,要么用
创建一个符号linkln -s svm.so.2 svm.so
现在 makefile 应该可以工作了。