Como instalar o Boost no Ubuntu


489

Estou no Ubuntu e quero instalar o Boost. Eu tentei com

sudo apt-get install boost

Mas não havia esse pacote. Qual é a melhor maneira de instalar o Boost no Ubuntu?

Respostas:


850

Você pode usar o apt-getcomando (requer sudo)

sudo apt-get install libboost-all-dev

Ou você pode ligar

aptitude search boost

encontre os pacotes necessários e instale-os usando o apt-getcomando


3
você tem alguma experiência passada com boost?
K53sc 25/09/12

1
Eu tinha experiência em programação com boost, mas não em instalação. Eu nunca tentei isso sozinho, então não sei dizer se é fácil de usar (mas me parece que o gerenciador de pacotes é a maneira mais fácil). Eu deveria ter postado esta sugestão como um comentário, mas não posso comentar perguntas.
Anton Guryanov 25/09/12

72
A única desvantagem do uso do apt-get é que geralmente há algumas versões do último lançamento do boost.
22412 Ralf

6
É fácil de construir e instalar impulso a partir das fontes, por exemplo anycoder.wordpress.com/2014/04/28/building-boost
Andrew Selivanov

5
Não use a versão empacotada do boost, agora no Ubuntu 16.04 é 1.58 e a versão estável mais recente é 1.67.0! Veja a resposta e meu comentário abaixo: stackoverflow.com/a/41272796/2617716
Jeb

182

Obtenha a versão do Boost necessária. Esta é a versão 1.55, mas fique à vontade para alterar ou fazer o download manualmente:

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/

Obtenha as bibliotecas necessárias, principais são icupara boost::regexsuporte:

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

Configuração do bootstrap do Boost:

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

Em seguida, construa-o com:

./b2

e eventualmente instalá-lo:

sudo ./b2 install

2
Qual será a diferença se usarmos ./bootstrap.sh --prefix = / usr / include? Eu tenho a biblioteca de impulso em / usr / include. Fiquei pensando que, ao fazer isso, posso substituir minha instalação antiga?
Sai

40
o que é libboost-all-dev? por que devo instalar o boost antes de instalar o boost?
usar o seguinte código

23
Também ./b2 installdeve ser executado como passo final
javapowered

21
@ tbc0 Boost é a versão 1.59 agora, e as últimas PPA é de 1,55, de modo a construir a partir da fonte é relevante
TemplateRex

5
@TemplateRex Retiro meu comentário. Eu desfiz meu voto negativo.
precisa saber é o seguinte

83

Instalando o Boost no Ubuntu com um exemplo de uso boost::array:

Instale libboost-all-dev e aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

Em seguida, cole isso em um arquivo C ++ chamado 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;
}

Compile assim:

g++ -o s main.cpp

Execute-o assim:

./s

Programa imprime:

hi1

3
Há um erro na linha "boost :: array <int, 4> arr = {{1,2,3,4}};", deve ser "boost :: array <int, 4> arr = {1 2,3,4}; "
Szulak

36
por que eu quero correr aptitude search boost?
precisa saber é o seguinte

24

Obtenha a versão do Boost necessária. Esta é a versão 1.55, mas fique à vontade para alterar ou fazer o download manualmente (página de download do Boost) :

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 /

Obtenha as bibliotecas necessárias, as principais são icu para suporte a boost :: regex:

sudo apt-get update
O sudo apt-get instala o essencial do g ++ python-dev autotools-dev libicu-dev libbz2-dev 

Configuração do bootstrap do Boost:

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

Se queremos MPI, precisamos definir o sinalizador no arquivo user-config.jam:

user_configFile = `encontre $ PWD -name user-config.jam`
eco "usando mpi;" >> $ user_configFile

Encontre o número máximo de núcleos físicos:

n = `cat / proc / cpuinfo | grep "núcleos da CPU" | uniq awk '{print $ NF}' '

Instale o impulso em paralelo:

sudo ./b2 --with = all -j $ n instalação 

Supõe que você já tenha a configuração / usr / local / lib . Caso contrário, você pode adicioná-lo ao seu CAMINHO DA BIBLIOTECA LD :

sudo sh -c 'echo "/ usr / local / lib" >> /etc/ld.so.conf.d/local.conf'

Redefina o ldconfig:

sudo ldconfig

1
Algumas coisas, como o PO Edit 2.0, requerem o boost 1.6, que não está disponível no momento através do apt-get. Você pode obtê-lo em boost.org/users/history/version_1_60_0.html e depois expandi-lo. Siga as instruções excelentes acima, lembrando que LD Biblioteca Caminho não é o mesmo que $ PATH
Andrew Killen

Por favor, altere o link para HTTPS; HTTP não é seguro para downloads binários :)
Clément

1
Comente uma instalação recente, para obter a versão mais recente: - Vá para boost.org e downloads de " Versão atual" para obter a última (atualmente 1.67.0: dl.bintray.com/boostorg/release/1.67.0/source / ... ) Obrigado!
Jeb

haha isso estraga meu sistema para sempre. Eu acho que são os últimos 2 itens.
thang

O link antigo para o sourceforge não está funcionando. use dl.bintray.com/boostorg/release/1.72.0/source/… (com a versão necessária) #
442 Victor Gavro

18

Uma atualização para o Windows 10 Ubuntu Application via Subsystem (também funciona no Ubuntu padrão):

Você pode ter problemas para encontrar o pacote. Se o fizer, nunca tema! O PPA está aqui!

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

Então corra:

sudo apt-get install libboost-all-dev

1
O OP não pediu o Win10.
Adrian W

9
Estou ciente, postando para aqueles (como eu) que estavam procurando uma solução arredondada. Semelhante à resposta de Алексей Штыков
x4g0tt3nSou1x 14/06

7
@AdrianW, esta resposta não é sobre o Windows 10. É sobre o Ubuntu que está sendo executado em um kernel do Windows 10 , por isso é uma solução válida para aqueles que executam o Ubuntu de alguma forma. Como a questão não a limitava ao Ubuntu rodando especificamente em um kernel Linux, esta solução é adequada.
Chai T. Rex

1
O repositório ' ppa.launchpad.net/boost-latest/ppa/ubuntu xenial Release' não possui um arquivo de Release.
user239558

1

Na verdade, você não precisa "instalar" ou "compilar" nada antes de usar o Boost em seu projeto. Você pode simplesmente fazer o download e extrair a biblioteca Boost para qualquer local da sua máquina, como normalmente é /usr/local/.

Quando você compila seu código, pode apenas indicar o compilador onde encontrar as bibliotecas -I. Por exemplo g++ -I /usr/local/boost_1_59_0 xxx.hpp,.


10
Isso funcionaria apenas para bibliotecas de cabeçalho de impulso. O restante deles precisaria ser construído ou instalado usando um gerenciador de pacotes, conforme descrito nas respostas acima. As bibliotecas de reforço que requerem construção e instalação separadas são: atomic, chrono, container, context, coroutine, coroutine2, date_time, exceção, sistema de arquivos, gráfico, graph_parallel, iostreams, locale, log, math, mpi, program_options, python, random regex, serialização, sinais, sistema, teste, thread, timer, type_erasure, wave.
Elias Kouskoumvekakis

Mesmo reparar esta solução seguindo as instruções adicionais de Elias Kouskoumvekakis seria uma péssima idéia (a menos que você tenha um bom motivo), já que os gerenciadores de pacotes adicionam a capacidade de atualizar muito facilmente o Boost para versões mais recentes (no Ubuntu, apenas sudo apt update; sudo apt upgradepara atualizar todos os seus pacotes para as versões mais recentes nos repositórios) se você encontrar o repositório de pacotes apropriado para o Boost e excluir com muita facilidade o Boost do sistema, se desejar. A abordagem manual torna essas tarefas mais difíceis, portanto, você precisa de um bom motivo para pular os benefícios de um gerenciador de pacotes.
Chai T. Rex

1
Além disso, a instalação sem um gerenciador de pacotes é melhor abordada em uma resposta anterior , que inclui instruções de construção necessárias.
Chai T. Rex
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.