如何在Ubuntu上安装Boost


489

我在Ubuntu上,并且想安装Boost。我尝试过

sudo apt-get install boost

但是没有这样的软件包。在Ubuntu上安装Boost的最佳方法是什么?

Answers:


848

您可以使用apt-get命令(需要sudo

sudo apt-get install libboost-all-dev

或者你可以打电话

aptitude search boost

查找所需的软件包并使用apt-get命令进行安装。


3
您是否有过使用Boost的经验?
k53sc 2012年

1
我有使用Boost的编程经验,但没有安装经验。我从来没有亲自尝试过,所以我不能说它是否易于使用(但是在我看来,包管理器是最简单的方法)。我应该把这个建议发表为评论,但是我不能评论问题。
安东·古里亚诺夫

71
使用apt-get的一个缺点是它通常比最新的boost版本落后几个版本。
拉尔夫2012年

6
从源代码构建和安装Boost很容易,例如anycoder.wordpress.com/2014/04/28/building-boost
Andrew

5
不要使用boost的打包版本,现在在Ubuntu 16.04上是1.58,最新的稳定版本是1.67.0!请参阅下面的回复和我的评论:stackoverflow.com/a/41272796/2617716
Jeb

182

获取所需的Boost版本。这是1.55,但可以随时更改或手动下载:

wget -O boost_1_55_0.tar.gz https://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0/

获取所需的库,主要的库icu用于boost::regex支持:

sudo apt-get update
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev

Boost的引导程序设置:

./bootstrap.sh --prefix=/usr/

然后用:

./b2

并最终安装它:

sudo ./b2 install

2
如果使用./bootstrap.sh --prefix = / usr / include,会有什么区别?我在/ usr / include中有boost库。我想知道这样做是否可以替换旧安装?
2014年

40
什么是libboost-all-dev?为什么在安装Boost之前应该先安装Boost?
javapowered

23
./b2 install应作为最后一步执行
javapowered 2015年

21
@ tbc0 Boost当前为1.59版本,最新的PPA为1.55,因此从源代码进行构建非常重要
TemplateRex

5
@TemplateRex我撤消我的评论。我取消了我的反对票。
tbc0

83

使用boost::array以下示例在Ubuntu上安装Boost :

安装libboost-all-dev和aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

然后将其粘贴到一个名为C ++的文件中main.cpp

#include <iostream>
#include <boost/array.hpp>

using namespace std;
int main(){
  boost::array<int, 4> arr = {{1,2,3,4}};
  cout << "hi" << arr[0];
  return 0;
}

像这样编译:

g++ -o s main.cpp

像这样运行它:

./s

程序打印:

hi1

3
“ boost :: array <int,4> arr = {{1,2,3,4}};”行中有错误,应为“ boost :: array <int,4> arr = {1 ,2,3,4};”
szulak

36
我为什么要跑步aptitude search boost
Leedehai

23

获取所需的Boost版本。这是1.55,但可以随时更改或手动下载(增强下载页面)

wget -O boost_1_55_0.tar.gz https://sourceforge.net/projects/boost/files/boost/1.55​​.0/boost_1_55_0.tar.gz/download
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0 /

获得所需的库,主要的是icu以获取boost :: regex支持:

sudo apt-get更新
sudo apt-get install build-essential g ++ python-dev autotools-dev libicu-dev libbz2-dev 

Boost的引导程序设置:

./bootstrap.sh --prefix = / usr / local

如果我们需要MPI,则需要在user-config.jam文件中设置标志:

user_configFile =`找到$ PWD -name user-config.jam`
回声“使用MPI”;>> $ user_configFile

查找最大物理核数:

n =`cat / proc / cpuinfo | grep“ cpu核心” | uniq | awk'{print $ NF}'`

并行安装boost:

sudo ./b2 --with = all -j $ n安装 

假设您已经设置了/ usr / local / lib。如果没有,您可以将其添加到LD LIBRARY PATH中

sudo sh -c'回显“ / usr / local / lib” >> /etc/ld.so.conf.d/local.conf'

重置ldconfig:

须藤ldconfig

1
诸如PO Edit 2.0之类的某些东西需要boost 1.6,目前无法通过apt-get获得,您可以从boost.org/users/history/version_1_60_0.html获得,然后进行扩展。请遵循上述出色的说明,记住LD库路径与$ PATH不同
Andrew Killen

请更改为HTTPS的链接;HTTP是不是二进制下载:)安全
克莱门特

1
来自最新安装的评论,以获取最新版本:-转到boost.org和“当前版本”下载以获取最新版本(当前为1.67.0:dl.bintray.com/boostorg/release/1.67.0/source /…)谢谢!
杰布

哈哈这永远搞砸了我的系统。我认为这是最后两个项目。
thang

到sourceforge的旧链接不起作用。使用dl.bintray.com/boostorg/release/1.72.0/source/…(带有所需版本)
Victor Gavro

18

通过子系统的Windows 10 Ubuntu应用程序更新(也适用于标准Ubuntu):

您可能在查找软件包时遇到问题。如果您这样做,请不要害怕!PPA在这里!

sudo add-apt-repository ppa:boost-latest/ppa
sudo apt-get update

然后运行:

sudo apt-get install libboost-all-dev

1
OP并没有要求Win10。
阿德里安W

9
我知道,正在为那些寻求全面解决方案的人(像我一样)发帖。类似于АлексейШтыков的答案
x4g0tt3nSou1x

7
@AdrianW这个答案与Windows 10无关。它与Ubuntu恰好在Windows 10内核上运行有关,因此对于以某种方式运行Ubuntu的人来说,这是一个有效的解决方案。由于该问题并不仅限于在Linux内核上运行的Ubuntu,因此此解决方案很好。
Chai T. Rex

1
存储库“ ppa.launchpad.net/boost-latest/ppa/ubuntu xenial版本”没有发布文件。
user239558 '19

1

实际上,在项目中使用Boost之前,您不需要“安装”或“编译”任何内容。您可以将Boost库下载并解压缩到计算机上的任何位置,通常就像/usr/local/

编译代码时,您只需通过指示编译器在哪里可以找到这些库-I。例如,g++ -I /usr/local/boost_1_59_0 xxx.hpp


10
这仅适用于boost的头文件库。它们的其余部分将需要使用软件包管理器来构建或安装,如以上答案所述。需要单独构建和安装的boost库如下:原子库,计时库,容器,上下文,协程,协程2,date_time,异常,文件系统,图,graph_parallel,iostream,语言环境,日志,数学,mpi,program_options,python,随机,正则表达式,序列化,信号,系统,测试,线程,计时器,type_erasure,wave。
Elias Kouskoumvekakis

即使按照Elias Kouskoumvekakis的进一步说明来修复此解决方案也是一个坏主意(除非您有充分的理由),因为程序包管理器添加了可以非常轻松地将Boost sudo apt update; sudo apt upgrade升级到较新版本的功能(在Ubuntu中,只需将所有程序包升级到如果您找到适合Boost的软件包存储库,并且可以根据需要很容易地从系统中删除Boost,请在存储库中找到最新版本。手动方法使这些任务更加困难,因此您有充分的理由跳过包管理器的好处。
Chai T. Rex

1
另外,在较早的答案中可以更好地覆盖没有软件包管理器的安装,其中包括必要的构建说明。
Chai T. Rex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.