在Ubuntu Server 14.04上,Boost编译失败。

3

我正在尝试在运行Ubuntu Server 14.04的计算机上安装Boost库1.49.0。编译Boost时出现以下错误。

...failed gcc.compile.c++ bin.v2/libs/locale/build/gcc-4.8/release/link-static/threading-multi/icu/formatter.o...
...skipped <pbin.v2/libs/locale/build/gcc-4.8/release/link-static/threading-multi>libboost_locale.a(clean) for lack of <pbin.v2/libs/locale/build/gcc-4.8/release/link-static/threading-multi>icu/formatter.o...
...skipped <pbin.v2/libs/locale/build/gcc-4.8/release/link-static/threading-multi>libboost_locale.a for lack of <pbin.v2/libs/locale/build/gcc-4.8/release/link-static/threading-multi>icu/formatter.o...
...skipped <p/usr/local/lib>libboost_locale.a for lack of <pbin.v2/libs/locale/build/gcc-4.8/release/link-static/threading-multi>libboost_locale.a...
...failed updating 2 targets...
...skipped 6 targets...

我该如何解决这个问题?

或者,尝试使用--without-icu进行引导(当然,只有在不需要Boost Locale的高级功能时才这样做)。 - sehe
@user657267 您是指安装libicu-dev吗?它已经安装了。 - shaikh
我安装了ICU并尝试了没有安装ICU的选项,但仍然出现相同的错误。安装Boost之前需要哪些先决条件? 我需要安装Boost 1.49版本。 - shaikh
你为什么需要特别使用Boost 1.49? - Griwes
@Griwes 我正在使用一些旧的依赖项,它们使用较旧的boost(boost 1.49),并且与较新版本的boost不兼容。 - shaikh
这并不是特定版本的问题。我在Ubuntu最新版本上使用boost 1.58、59、60时遇到了完全相同的错误信息。我一定漏掉了某些依赖项。 - Kemin Zhou
2个回答

4

一如既往,我强烈推荐通过作弊方式获取任何库的依赖项:

sudo apt-get build-dep libboost-all-dev

注:为了清晰起见,此操作只是确保存在构建发行版打包版本所需的所有依赖项。因此,它只是手动安装所有这些依赖项的快捷方式。
尤其是,它将修复缺少的 ICU 依赖项,因此您可以成功编译任何(修改后的?)Boost 版本。

我尝试了这个,但它没有起作用。虽然它安装了一些依赖项,但我仍然得到相同的错误。 - shaikh
你又运行了 ./bootstrap.sh 吗? - sehe
我需要安装boost 1.49。sudo apt-get build-dep libboost-all-dev对于boost 1.49也适用吗? - shaikh
@shaikh 请参考我们在这里进行的**长时间讨论,原本(我想知道你怎么错过了?)另外,你不是说“我试过了”吗?(提示:“是的。”**) - sehe
1
@shaikh 实际上不需要编译Boost Locale。或者,您可以使用我2天前评论的提示:**或者,尝试使用--without-icu进行引导(当然,仅在您不需要Boost Locale的高级功能时)** - sehe
显示剩余5条评论

0

如果你真的需要或想要Boost发布版1.49,你可以通过packages.ubuntu.com搜索功能找到它。

但是既然你已经使用Ubuntu 14.04,为什么不直接使用Boost 1.54呢?使用包将导致自动升级,因此下一个Ubuntu版本中你会得到Boost 1.55等等。


嗯,我不知道这个。有没有办法在Trusty上也获得它?还是这个特定的软件包版本在Saucy中可用只是“幸运”?(嗯,14.04本来就是Trusty;你建议手动下载Debs吗?) - sehe
1
你几乎总是可以使用旧版本。是的,它们往往仍然在镜像站点下的相应版本名称中,例如在这里查看所有已知的libboost-all-dev,一直指向后面。由于出色的http://snapshot.debian.org,我们在Debian方面做得更好,它保留了所有软件包的所有发布版本。 - Dirk Eddelbuettel
好的,下次我会再试一下Debian。我喜欢它的方便性。 - sehe
我尝试了你提供的boost版本,但编译仍然出现相同的错误。我有什么遗漏吗? - shaikh
你安装了 libboost-all-dev 吗? - Dirk Eddelbuettel
@DirkEddelbuettel:有没有办法使用apt-get安装更高版本的软件? 我在Ubuntu 14.04上,需要获取bosst 1.55+,但不幸的是,正如您所提到的,Ubuntu 14.04使用apt-get安装1.54。 有没有办法绕过这个问题?而不是安装1.54,可以安装1.55或1.58吗? - Hossein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接