Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ /usr/bin/ld:找不到-lboost\U系统-mt_C++_Boost - Fatal编程技术网

C++ /usr/bin/ld:找不到-lboost\U系统-mt

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

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

< >我的机器上没有其他的改变,但是,当我正在构建我的C++程序时,我得到以下链接错误:

/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工作-在两个案例中,我都遇到过此问题,但没有问题(取决于我猜的具体情况)