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

时间:2011-01-04 17:22:50

标签: c++ boost

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

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

/usr/bin/ld: cannot find -lboost_system-mt

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

我该如何解决这个问题?

7 个答案:

答案 0 :(得分:18)

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

在make之后安装openvrml,错误“找不到-lboost_filesystem-mt”。

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

答案 1 :(得分: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

答案 2 :(得分:4)

我也遇到过这种奇怪的遭遇。我的解决方案是一个奇怪的出价 - 但因为它对我有用,而我在其他任何地方都没有读到它,这里就是。 在我的情况下,缺少lboost_python3。

因此,我加载了所有54个包,如@Kilgore Trout建议的

sudo apt-get install libboost-all-dev

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

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

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

答案 3 :(得分:1)

您确定/usr/lib/libboost_system-mt.so sym-link指向正确的文件:

$ realpath /usr/lib/libboost_system-mt.so

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

答案 4 :(得分:1)

我有事:

$ dpkg -S /usr/lib/libboost_system-mt.so
libboost-system1.49-dev: /usr/lib/libboost_system-mt.so

因此,您可以这样做:

sudo apt-get install libboost-system1.49-dev

答案 5 :(得分:1)

修复了这个感谢@KilgoreTrout@user3191035,所以这是我的笔记:我在Ubuntu Natty 11.04;我通常的状态是:

$ dpkg -S libboost_filesystem
libboost-filesystem1.42.0: /usr/lib/libboost_filesystem.so.1.42.0

然后我安装了:

sudo apt-get install libboost-all-dev # ton of packages

......之后,我明白了:

$ dpkg -S libboost_filesystem
libboost-filesystem1.42-dev: /usr/lib/libboost_filesystem-mt.a
libboost-filesystem1.42.0: /usr/lib/libboost_filesystem.so.1.42.0
libboost-filesystem1.42-dev: /usr/lib/libboost_filesystem.so
libboost-filesystem1.42-dev: /usr/lib/libboost_filesystem-mt.so
libboost-filesystem1.42-dev: /usr/lib/libboost_filesystem.a

所以,这就是libboost_filesystem-mt.so在这个操作系统中的位置......

答案 6 :(得分:1)

将libboost_thread-mt更改为libboost_thread,首先找到libboost_thread.so和libboost_thread.a的地址,然后在同一地址中对这些文件进行软链接,所以它应该是

ln -s /...libboostSourceFiles.../libboost_thread.so /..RequestTOmtFiles.../libboost_thread-mt.so

它也适用于其他libboost -mt文件,如序列化,iostreams,programoptions