C++ /usr/bin/ld:找不到-lboost\U系统-mt
我最近从Boost1.40升级到了1.45,完全删除了以前的boost目录,下载了1.45源代码并重建了我想要的库。然后,我使用bjam install安装了libs < >我的机器上没有其他的改变,但是,当我正在构建我的C++程序时,我得到以下链接错误:C++ /usr/bin/ld:找不到-lboost\U系统-mt,c++,boost,C++,Boost,我最近从Boost1.40升级到了1.45,完全删除了以前的boost目录,下载了1.45源代码并重建了我想要的库。然后,我使用bjam install安装了libs < >我的机器上没有其他的改变,但是,当我正在构建我的C++程序时,我得到以下链接错误: /usr/bin/ld: cannot find -lboost_system-mt 我搜索过,但文件确实不存在。似乎机器翻译库不再是库的一部分——或者我遗漏了什么 如何解决此问题?您确定/usr/lib/libboost\u system
/usr/bin/ld: cannot find -lboost_system-mt
我搜索过,但文件确实不存在。似乎机器翻译库不再是库的一部分——或者我遗漏了什么
如何解决此问题?您确定
/usr/lib/libboost\u system-mt.so
sym链接指向正确的文件:
$ realpath /usr/lib/libboost_system-mt.so
否则,您必须安装项目或使用您的分发包管理。对于Debian/Ubuntu来说,它应该是
apt-get-install-libboost-system1.45-dev
——但在编写此文件时,此软件包不存在。此版本默认情况下可能不会启用多线程
尝试传递-lboost\u system
而不是-lboost\u system-mt
编辑:
另外,检查新的lib是否真的在/usr/local/lib
中也很好。您应该查找/usr/local/lib/libboost\u系统。因为您没有请求使用多线程构建libs。如果文件在那里,那么您的$PATH(环境变量)可能会丢失/usr/local/lib
,您应该更新编译命令,以便编译器知道在哪里可以找到它们:
-L/usr/local/lib-lboost\u system-mt
好吧,我在Ubuntu12.04(x86\u 64)上用一种很好的旧的散射枪方法解决了这个错误
在make之后安装openvrml时出现错误“找不到-lboost\u filesystem-mt”
libboost-all-dev.安装54个不同的软件包。他们中一定有人耍了把戏,跑得很好 我有点无礼:
$ 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
修复了这个问题,多亏了’s和,下面是我的笔记:我在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\u filesystem-mt.So
将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等。我也遇到过这种奇怪的情况。我的解决方案有点奇怪——但因为它对我有效,而且我没有在其他地方读到它,所以它就在这里。 在我的情况下,lboost_python3不见了 因此,我加载了所有54个包,如@Kilgore Trout建议的:
sudo-apt-get-install-libboost-all-dev
不幸的是,当我查看/usr/lib
-文件夹时,那里只有某些包可用。然而,当我搜索/usr/lib
时,我得到了更多的结果-丢失的文件都在/usr/lib/arm-linux-gnueabihf
-文件夹中
我只是简单地将所有与libboost相关的文件复制粘贴到/usr/lib
-文件夹中,等等——下一次我试图用lboost_python3构建任何东西时,一切都正常了
好像有些路混在一起了,或者类似的。
希望这对你或其他人有帮助。你能用非多线程库(只需
boost\u system
)构建吗?试试rpm-ql boost-devel | grep libboost
看看有什么。那么你已经有了。@chris/Hans:是的,我成功地构建并安装了以下boost-libs:filesystem,serialization,regex,program_options.@skyeagle如果您打算链接到boost_系统,您还需要构建并安装该系统。如果您指出如何升级您的系统,这将有所帮助。您是从RPM安装的还是使用bjam从源代码构建的?@sam:我通过完全删除以前的boost目录进行了“升级”,下载了1.45源代码并重建了我想要的库。然后我使用bjam installHa安装了libs!在看到这篇文章之前,我一直在避免安装那个软件包。为megreat answer工作-在两个案例中,我都遇到过此问题,但没有问题(取决于我猜的具体情况)