我试图编译我的程序,它返回这个错误:
usr/bin/ld: cannot find -l<nameOfTheLibrary>
在我的makefile中,我使用命令g++并链接到我的库,这是一个符号链接到我的库位于另一个目录。
是否有一个选项添加,使其工作,请?
我试图编译我的程序,它返回这个错误:
usr/bin/ld: cannot find -l<nameOfTheLibrary>
在我的makefile中,我使用命令g++并链接到我的库,这是一个符号链接到我的库位于另一个目录。
是否有一个选项添加,使其工作,请?
当前回答
首先,你需要知道lxxx的命名规则:
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lltdl
/usr/bin/ld: cannot find -lXtst
Lc就是libc。LLTDL的意思是libltdl。所以,lXtst意味着libx .so。
它是lib + lib-name +。So
一旦我们知道了这个名称,我们就可以使用locate来找到这个lxxx的路径。所以文件。
$ locate libiconv.so
/home/user/anaconda3/lib/libiconv.so # <-- right here
/home/user/anaconda3/lib/libiconv.so.2
/home/user/anaconda3/lib/libiconv.so.2.5.1
/home/user/anaconda3/lib/preloadable_libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2.5.1
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/preloadable_libiconv.so
如果你找不到它,你需要通过yum安装它(我使用CentOS)。通常你有这个文件,但它没有链接到正确的地方。
将它链接到正确的位置,通常是/lib64或/usr/lib64
$ sudo ln -s /home/user/anaconda3/lib/ libiccon .所以/usr/lib64/
完成了!
裁判:https://i-pogo.blogspot.jp/2010/01/usrbinld-cannot-find-lxxx.html
其他回答
首先,你需要知道lxxx的命名规则:
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lltdl
/usr/bin/ld: cannot find -lXtst
Lc就是libc。LLTDL的意思是libltdl。所以,lXtst意味着libx .so。
它是lib + lib-name +。So
一旦我们知道了这个名称,我们就可以使用locate来找到这个lxxx的路径。所以文件。
$ locate libiconv.so
/home/user/anaconda3/lib/libiconv.so # <-- right here
/home/user/anaconda3/lib/libiconv.so.2
/home/user/anaconda3/lib/libiconv.so.2.5.1
/home/user/anaconda3/lib/preloadable_libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2.5.1
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/preloadable_libiconv.so
如果你找不到它,你需要通过yum安装它(我使用CentOS)。通常你有这个文件,但它没有链接到正确的地方。
将它链接到正确的位置,通常是/lib64或/usr/lib64
$ sudo ln -s /home/user/anaconda3/lib/ libiccon .所以/usr/lib64/
完成了!
裁判:https://i-pogo.blogspot.jp/2010/01/usrbinld-cannot-find-lxxx.html
我试图链接到的库有一个非标准的名称(即没有'lib'前缀),所以他们建议使用这样的命令来编译它-
包含lib/cspice。一个- lm
检查你的库的位置,例如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作品。
如果符号链接是指向动态库的,也会出现这个错误。.so,但是由于遗留的原因-static出现在链接标志中。如果是,试着把它去掉。