gpt4 book ai didi

makefile - ld 找不到给定 -L 的库

转载 作者:行者123 更新时间:2023-12-02 22:14:26 24 4
gpt4 key购买 nike

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

最佳答案

-lsvm表示使用svm.so文件

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

因此,要么重命名,要么建立符号链接(symbolic link)

ln -s svm.so.2 svm.so

现在 makefile 应该可以工作了。

关于makefile - ld 找不到给定 -L 的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31733030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com