我试图编译我的程序,它返回这个错误:
usr/bin/ld: cannot find -l<nameOfTheLibrary>
在我的makefile中,我使用命令g++并链接到我的库,这是一个符号链接到我的库位于另一个目录。
是否有一个选项添加,使其工作,请?
我试图编译我的程序,它返回这个错误:
usr/bin/ld: cannot find -l<nameOfTheLibrary>
在我的makefile中,我使用命令g++并链接到我的库,这是一个符号链接到我的库位于另一个目录。
是否有一个选项添加,使其工作,请?
当前回答
我在使用Centos 7.8的新VM上编译LXC时遇到了这个问题。我尝试了以上所有的方法,但都失败了。有人建议从编译器配置中删除-static标志,但我不想改变任何东西。
唯一有帮助的是安装glibc-static并重试。希望这能帮助到别人。
其他回答
如果你的库名是libxyz。因此,它位于路径上,说:
/home/user/myDir
然后将其链接到您的程序:
g++ -L/home/user/myDir -lxyz myprog.cpp -o myprog
当你编译你的程序时,你必须提供库的路径;在g++中使用-L选项:
g++ myprogram.cc -o myprogram -lmylib -L/path/foo/bar
如果符号链接是指向动态库的,也会出现这个错误。.so,但是由于遗留的原因-static出现在链接标志中。如果是,试着把它去掉。
我在使用Centos 7.8的新VM上编译LXC时遇到了这个问题。我尝试了以上所有的方法,但都失败了。有人建议从编译器配置中删除-static标志,但我不想改变任何东西。
唯一有帮助的是安装glibc-static并重试。希望这能帮助到别人。
在g++编译期间,如果使用-Loption改变Makefile可能不合适,则通过make define LIBRARY_PATH。我把额外的库放在/opt/lib中,所以我做了:
$ export LIBRARY_PATH=/opt/lib/
然后运行make以成功编译和链接。
使用共享库运行程序定义:
$ export LD_LIBRARY_PATH=/opt/lib/
在执行程序之前。