Come installare Boost su Ubuntu


489

Sono su Ubuntu e voglio installare Boost. Ci ho provato

sudo apt-get install boost

Ma non c'era un simile pacchetto. Qual è il modo migliore per installare Boost su Ubuntu?

Risposte:


850

Puoi usare il apt-getcomando (richiede sudo)

sudo apt-get install libboost-all-dev

Oppure puoi chiamare

aptitude search boost

trova i pacchetti che ti servono e installali usando il apt-getcomando


3
hai qualche esperienza passata con boost?
k53sc,

1
Ho avuto esperienza di programmazione con boost, ma non esperienza di installazione. Non l'ho mai provato da solo, quindi non posso dire se sia facile da usare (ma mi sembra che il gestore dei pacchetti sia il modo più semplice). Avrei dovuto pubblicare questo suggerimento come commento, ma non posso commentare le domande.
Anton Guryanov,

72
Lo svantaggio di usare apt-get è che di solito è un paio di versioni dietro l'ultima versione boost.
Ralf,

6
È facile costruire e installare Boost dai sorgenti, ad esempio anycoder.wordpress.com/2014/04/28/building-boost
Andrew Selivanov,

5
Non usare la versione in pacchetto di boost, in questo momento su Ubuntu 16.04 è la 1.58 e l'ultima versione stabile è la 1.67.0! Vedi la risposta e il mio commento qui sotto: stackoverflow.com/a/41272796/2617716
Jeb

182

Ottieni la versione di Boost di cui hai bisogno. Questo è per 1.55 ma sentiti libero di cambiare o scaricare manualmente te stesso:

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/

Ottieni le librerie richieste, le principali sono icuper il boost::regexsupporto:

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

Configurazione bootstrap di Boost:

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

Quindi compilalo con:

./b2

e infine installarlo:

sudo ./b2 install

2
Quale sarà la differenza se usiamo ./bootstrap.sh --prefix = / usr / include? Ho la libreria boost in / usr / include. Mi chiedevo che, facendo questo, posso sostituire la mia vecchia installazione?
Sai,

40
cos'è libboost-all-dev? perché dovrei installare boost prima di installare boost?
javapowered

23
inoltre ./b2 installdovrebbe essere eseguito come passaggio finale
javapowered

21
@ tbc0 Boost è ora alla versione 1.59 e l'ultimo PPA è alla 1.55, quindi la costruzione dalla fonte è rilevante
TemplateRex

5
@TemplateRex Ritiro il mio commento. Ho annullato il mio voto negativo.
TB0,

83

Installazione di Boost su Ubuntu con un esempio di utilizzo boost::array:

Installa libboost-all-dev e aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

Quindi incollalo in un file C ++ chiamato 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;
}

Compila in questo modo:

g++ -o s main.cpp

Eseguilo in questo modo:

./s

Stampe del programma:

hi1

3
C'è un errore nella riga "boost :: array <int, 4> arr = {{1,2,3,4}};", dovrebbe essere "boost :: array <int, 4> arr = {1 , 2,3,4};"
szulak,

36
perché voglio correre aptitude search boost?
Leedehai,

24

Ottieni la versione di Boost di cui hai bisogno. Questo è per 1.55 ma sentiti libero di cambiare o scaricare manualmente te stesso (Potenzia la pagina di download) :

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 /

Ottieni le librerie richieste, le principali sono icu per il supporto boost :: regex:

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

Configurazione bootstrap di Boost:

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

Se vogliamo MPI, allora dobbiamo impostare il flag nel file user-config.jam:

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

Trova il numero massimo di core fisici:

n = `cat / proc / cpuinfo | grep "core della cpu" | uniq | awk '{print $ NF}' '

Installa boost in parallelo:

sudo ./b2 --with = all -j $ n install 

Presuppone che tu abbia già configurato / usr / local / lib . in caso contrario, puoi aggiungerlo al PERCORSO DELLA LIBRERIA LD :

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

Ripristina ldconfig:

sudo ldconfig

1
Alcune cose come PO Edit 2.0 richiedono boost 1.6, che al momento non è disponibile tramite apt-get, puoi ottenerlo da boost.org/users/history/version_1_60_0.html e poi espanderlo. Segui le eccellenti istruzioni sopra, ricordando che LD Library Path non è lo stesso di $ PATH
Andrew Killen

Modifica il link in HTTPS; HTTP non è sicuro per i download binari :)
Clément

1
Commenta da una recente installazione, per ottenere l'ultima versione: - Vai ai download boost.org e "Current release" per ottenere l'ultimo (attualmente 1.67.0: dl.bintray.com/boostorg/release/1.67.0/source / ... ) Grazie!
Jeb,

ahah questo rovina il mio sistema per sempre. penso che siano gli ultimi 2 articoli.
Grazie,

il vecchio collegamento a sourceforge non funziona. usa dl.bintray.com/boostorg/release/1.72.0/source/… (con la versione necessaria)
Victor Gavro,

18

Un aggiornamento per l'applicazione Ubuntu Windows 10 tramite sottosistema (funziona anche su Ubuntu standard):

Potresti avere problemi a trovare il pacchetto. Se lo fai, non temere mai! PPA è qui!

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

Quindi eseguire:

sudo apt-get install libboost-all-dev

1
OP non ha richiesto Win10.
Adrian W,

9
Sono consapevole, pubblicando per quelli (come me) che stavano cercando una soluzione arrotondata. Simile alla risposta di Алексей Штыков
x4g0tt3nSou1x

7
@AdrianW questa risposta non riguarda Windows 10. Si tratta di Ubuntu che sembra essere in esecuzione su un kernel Windows 10 , quindi è una soluzione valida per coloro che eseguono Ubuntu in qualche modo. Dal momento che la domanda non lo ha limitato a Ubuntu in esecuzione su un kernel Linux in particolare, questa soluzione va bene.
Chai T. Rex,

1
Il repository ' ppa.launchpad.net/boost-latest/ppa/ubuntu xenial Release' non ha un file di rilascio.
user239558

1

In realtà non è necessario "installare" o "compilare" nulla prima di utilizzare Boost nel progetto. Puoi semplicemente scaricare ed estrarre la libreria Boost in qualsiasi posizione sul tuo computer, che di solito è come /usr/local/.

Quando compili il tuo codice, puoi semplicemente indicare al compilatore dove trovare le librerie -I. Ad esempio g++ -I /usr/local/boost_1_59_0 xxx.hpp,.


10
Funzionerebbe solo per le librerie di header di boost. Gli altri dovrebbero essere compilati o installati utilizzando un gestore pacchetti come descritto nelle risposte sopra. Le librerie boost che richiedono costruzione e installazione separate sono le seguenti: atomico, crono, contenitore, contesto, coroutine, coroutine2, date_time, eccezione, filesystem, grafico, graph_parallel, iostreams, locale, log, math, mpi, program_options, python, random , regex, serializzazione, segnali, sistema, test, thread, timer, type_erasure, wave.
Elias Kouskoumvekakis,

Anche riparare questa soluzione seguendo le ulteriori istruzioni di Elias Kouskoumvekakis sarebbe una cattiva idea (a meno che tu non abbia una buona ragione), dal momento che i gestori dei pacchetti aggiungono la possibilità di aggiornare molto facilmente Boost alle versioni più recenti (in Ubuntu, solo sudo apt update; sudo apt upgradeper aggiornare tutti i tuoi pacchetti a le ultime versioni nei repository) se trovi il repository di pacchetti appropriato per Boost e, se lo desideri, elimina Boost dal sistema molto facilmente. L'approccio manuale rende tali compiti più difficili, quindi è necessario un buon motivo per saltare i vantaggi di un gestore di pacchetti.
Chai T. Rex,

1
Inoltre, l'installazione senza un gestore pacchetti è meglio descritta in una risposta precedente , che include le istruzioni di costruzione necessarie.
Chai T. Rex,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.