我有一个目标文件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
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)
-lsvm表示使用文件svm.so
但是您的库文件名为svm.so.2。(版本2)
因此,可以使用以下命令重命名或建立符号链接
ln -s svm.so.2 svm.so
Run Code Online (Sandbox Code Playgroud)
现在,makefile应该可以工作了。
| 归档时间: |
|
| 查看次数: |
4813 次 |
| 最近记录: |