我试图编译我的程序,它返回这个错误:
usr/bin/ld: cannot find -l<nameOfTheLibrary>
在我的makefile中,我使用命令g++并链接到我的库,这是一个符号链接到我的库位于另一个目录。
是否有一个选项添加,使其工作,请?
我试图编译我的程序,它返回这个错误:
usr/bin/ld: cannot find -l<nameOfTheLibrary>
在我的makefile中,我使用命令g++并链接到我的库,这是一个符号链接到我的库位于另一个目录。
是否有一个选项添加,使其工作,请?
当前回答
我遇到了同样的错误消息。
我构建了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
我遇到了同样的错误消息。
我构建了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作品。
这是我笔记本电脑的Ubuntu信息。
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
我使用locate查找boost_filesystem和boost_system的.so文件
locate libboost_filesystem
locate libboost_system
然后将.so文件链接到/usr/lib并重命名为.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 /usr/lib/libboost_filesystem.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 /usr/lib/libboost_system.so
完成了!R包velocyto。R安装成功!
检查你的库的位置,例如lxxx.so:
locate lxxx.so
如果不在/usr/lib文件夹中,输入:
sudo cp yourpath/lxxx.so /usr/lib
完成了。