通过完全删除以前的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个不同的包.其中一个必须完成这个技巧,运行正常.
此版本可能默认情况下不启用多线程.
尝试传球-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
我也遇到过这种奇怪的情况。我的解决方案有点奇怪 - 但因为它对我有用,而且我没有在其他任何地方读到它,所以在这里。在我的情况下,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构建任何东西时,一切正常。
似乎有些路径混淆了或类似的东西。希望这可以帮助您或其他人。
您确定/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
——但是在编写本文时这个包不存在。