boost库在ubuntu上出错

时间:2010-04-13 11:17:45

标签: boost

我正在尝试在ubuntu 8.1上编译一个包

执行此命令时:./ configure我收到以下错误:

检查Boost标头版本> = 103700 ...否 configure:error:找不到Boost头文件版本> = 103700

知道我使用这些命令安装了所需的boost包:

$ apt-get install libboost-dev libboost-graph-dev libboost-iostreams-dev

有人可以帮忙吗?


谢谢你。现在它可以工作,但是在运行时我得到另一个错误./configure:检查boost / iostreams / device / file_descriptor.hpp可用性...是检查boost / iostreams / device / file_descriptor.hpp存在...是检查boost / iostreams / device / file_descriptor.hpp ...是检查Boost iostreams库...没有配置:错误:无法找到与Boost iostreams链接的标志有什么想法吗?

1 个答案:

答案 0 :(得分:2)

可能是你从Ubuntu存储库获得的boost版本太旧了(建议here 8.10的最高版本是1.35;看起来你的配置脚本要求1.37 )。您可能需要从源代码构建;在我所链接的问题的答案中有更多信息,希望对此有所帮助。

更新:

从您的新错误中,听起来configure现在无法找到boost_iostreams库。在我的系统上它是/usr/lib/libboost_iostreams-mt.[a|so] - 你有这些文件(可能在不同的目录中,具体取决于你安装boost的位置)?

您还可以尝试运行ldconfig,以防丢失符号链接(例如, libboost_iostreams-mt.so.1.37.0libboost_iostreams-mt.so)。

这是configure由GNU autoconf生成的吗?如果是,则在同一目录中应该有一个名为config.log的文件,其中包含在查找内容时尝试运行的所有命令configure的列表。如果有任何关于boost_iostreams的内容可以发布吗?

一个完全随机的猜测:我发现在boost_iostreams的网络链接上没有多线程后缀-mt的一些示例 - 但我根本没有在我的机器上。也许您的configure脚本遇到了同样的问题?

更新2

configure脚本似乎正在寻找boost iostreams库的单线程调试版本,默认情况下从linux上构建源代码时不会生成。此外,linux上的默认设置不是基于构建配置来命名库(因此,您在/usr/lib中找到的库可能不是您从源代码安装的库,除非您将其覆盖)。这个东西在boost网站上没有真正解释过,我只是通过查看Jamroot文件(bjam --help也可以)找到了!无论如何,要获得具有正确构建配置的库并正确命名,我需要进入boost源树的根目录并运行:

sudo bjam --with-iostreams --layout=tagged variant=debug threading=single install

对我来说,这会将库(libboost_iostreams-d.a和共享版本)放入/usr/local/libld默认会找到它们,所以这应该没问题。如果您需要他们去其他地方,您可以使用--prefix=...选项bjam,例如。如果您想在/usr/lib中使用--prefix=/usr,则可以执行--with-iostreams。如果你正在构建的软件包需要更多的boost库,你可以删除iostream,然后将它们全部构建(或用你需要的每个其他库的名称替换libbz2-dev)。

旁注:我必须安装{{1}}软件包以获得增强的iostreams构建 - 如果您构建了所有的boost,那么很容易错过这里的错误,因为输出太多了!