/ usr/bin/ld:找不到-lboost_system-mt

sky*_*gle 15 c++ boost

通过完全删除以前的boost目录,下载1.45源并重建我想要的库,我最近从boost 1.40升级到1.45.然后我使用bjam install安装了libs.

我的机器上没有其他任何改变,但是,现在当我构建我的C++程序时,我收到以下链接错误:

/usr/bin/ld: cannot find -lboost_system-mt
Run Code Online (Sandbox Code Playgroud)

我搜索过,文件确实不存在.似乎mt库不再是库的一部分 - 或者我错过了什么?

我怎么解决这个问题?

小智 18

好吧,我用优秀的旧散射枪方法在ubuntu 12.04(x86_64)上解决了这个错误

在make之后安装openvrml,错误"找不到-lboost_filesystem-mt".

libboost-ALL-dev的.安装54个不同的包.其中一个必须完成这个技巧,运行正常.


kar*_*lip 6

此版本可能默认情况下不启用多线程.

尝试传球-lboost_system而不是-lboost_system-mt

编辑:

另外,检查新库是否真的在内部也是很好的/usr/local/lib.您应该查找/usr/local/lib/libboost_system.so,因为您没有请求使用多线程构建库.如果文件在那里,那么你的$ PATH(环境变量)可能会丢失/usr/local/lib,你应该更新编译命令,以便编译器知道在哪里找到它们:

-L/usr/local/lib -lboost_system-mt


Mar*_*kus 5

我也遇到过这种奇怪的情况。我的解决方案有点奇怪 - 但因为它对我有用,而且我没有在其他任何地方读到它,所以在这里。在我的情况下,lboost_python3丢失了。

因此,我像@Kilgore Trout 建议的那样加载了所有 54 个包:

sudo apt-get install libboost-all-dev
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我查看/usr/lib- 文件夹时,那里只有某些包可用。但是,当我搜索时,/usr/lib我得到了更多结果 - 丢失的文件都在/usr/lib/arm-linux-gnueabihf- 文件夹中。

我只是将所有与libboost相关的文件复制粘贴到/usr/lib-folder et voilà 中 - 下次我尝试使用lboost_python3.so构建任何东西时,一切正常。

似乎有些路径混淆了或类似的东西。希望这可以帮助您或其他人。


Rap*_*sek 1

您确定/usr/lib/libboost_system-mt.so符号链接指向正确的文件吗:

$ realpath /usr/lib/libboost_system-mt.so
Run Code Online (Sandbox Code Playgroud)

否则,您必须安装该项目或使用您的分发包管理。对于 Debian/Ubuntu 来说是这样apt-get install libboost-system1.45-dev——但是在编写本文时这个包不存在。