我正在尝试在ubuntu 8.1上编译一个包
执行此命令时:./ configure我收到以下错误:
检查Boost标头版本> = 103700 ...否 configure:error:找不到Boost头文件版本> = 103700
知道我使用这些命令安装了所需的boost包:
$ apt-get install libboost-dev libboost-graph-dev libboost-iostreams-dev
有人可以帮忙吗?
答案 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.0
至libboost_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/lib
,ld
默认会找到它们,所以这应该没问题。如果您需要他们去其他地方,您可以使用--prefix=...
选项bjam
,例如。如果您想在/usr/lib
中使用--prefix=/usr
,则可以执行--with-iostreams
。如果你正在构建的软件包需要更多的boost库,你可以删除iostream
,然后将它们全部构建(或用你需要的每个其他库的名称替换libbz2-dev
)。
旁注:我必须安装{{1}}软件包以获得增强的iostreams构建 - 如果您构建了所有的boost,那么很容易错过这里的错误,因为输出太多了!