我试图编译我的程序,它返回这个错误:

usr/bin/ld: cannot find -l<nameOfTheLibrary>

在我的makefile中,我使用命令g++并链接到我的库,这是一个符号链接到我的库位于另一个目录。

是否有一个选项添加,使其工作,请?


当前回答

检查你的库的位置,例如lxxx.so:

locate lxxx.so

如果不在/usr/lib文件夹中,输入:

sudo cp yourpath/lxxx.so /usr/lib

完成了。

其他回答

我遇到了同样的错误消息。

我构建了cmocka作为一个so,并试图将它链接到我的可执行文件。 但ld总是抱怨如下:

/usr/bin/ld:无法找到-lcmocka

在构建cmocka之后,生成了3个文件:

libcmocka.so libcmocka.so.0 Libcmocka. So. 0.7.0

1和2是符号链接,只有3是真正的文件。

我只复制了1到我的库文件夹,ld没有找到3。

在我复制了所有的3,ld作品。

当你编译你的程序时,你必须提供库的路径;在g++中使用-L选项:

g++ myprogram.cc -o myprogram -lmylib -L/path/foo/bar

如果你的库名是libxyz。因此,它位于路径上,说:

/home/user/myDir

然后将其链接到您的程序:

g++ -L/home/user/myDir -lxyz myprog.cpp -o myprog

如果符号链接是指向动态库的,也会出现这个错误。.so,但是由于遗留的原因-static出现在链接标志中。如果是,试着把它去掉。

检查你的库的位置,例如lxxx.so:

locate lxxx.so

如果不在/usr/lib文件夹中,输入:

sudo cp yourpath/lxxx.so /usr/lib

完成了。