So installieren Sie Boost unter Ubuntu

489

Ich bin auf Ubuntu und möchte Boost installieren. Ich habe es mit versucht

sudo apt-get install boost

Aber es gab kein solches Paket. Was ist der beste Weg, um Boost unter Ubuntu zu installieren?

k53sc
quelle

Antworten:

849

Sie können apt-getBefehl verwenden (erfordert sudo)

sudo apt-get install libboost-all-dev

Oder Sie können anrufen

aptitude search boost

Suchen Sie die benötigten Pakete und installieren Sie sie mit dem apt-getBefehl.

Anton Guryanov
quelle
3
Hast du schon Erfahrungen mit Boost?
k53sc
1
Ich hatte Programmiererfahrung mit Boost, aber keine Installationserfahrung. Ich habe das noch nie selbst versucht, daher kann ich nicht sagen, ob es einfach zu bedienen ist (aber es scheint mir, dass der Paketmanager der einfachste Weg ist). Ich hätte diesen Vorschlag als Kommentar posten sollen, kann aber keine Fragen kommentieren.
Anton Guryanov
71
Der einzige Nachteil der Verwendung von apt-get ist, dass es sich normalerweise um einige Versionen hinter der neuesten Boost-Version handelt.
Ralf
6
Es ist einfach, Boost aus den Quellen zu erstellen und zu installieren, zum Beispiel anycoder.wordpress.com/2014/04/28/building-boost
Andrew Selivanov
5
Verwenden Sie nicht die gepackte Version von Boost. Derzeit ist sie unter Ubuntu 16.04 1.58 und die neueste stabile Version 1.67.0! Siehe die Antwort und meinen Kommentar unten: stackoverflow.com/a/41272796/2617716
Jeb
182

Holen Sie sich die Version von Boost, die Sie benötigen. Dies ist für 1.55, aber Sie können es jederzeit ändern oder manuell herunterladen:

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/

Holen Sie sich die erforderlichen Bibliotheken sind wichtigsten sind icufür boost::regexUnterstützung:

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

Boosts Bootstrap-Setup:

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

Dann baue es mit:

./b2

und schließlich installieren:

sudo ./b2 install
user3715812
quelle
2
Was ist der Unterschied, wenn wir ./bootstrap.sh --prefix = / usr / include verwenden? Ich habe die Boost-Bibliothek in / usr / include. Ich habe mich gefragt, ob ich auf diese Weise meine alte Installation ersetzen kann.
Sai
40
Was ist Libboost-All-Dev? Warum sollte ich Boost installieren, bevor ich Boost installiere?
Javapowered
23
auch ./b2 installsollte als letzter Schritt ausgeführt werden
javapowered
21
@ tbc0 Boost ist jetzt auf Version 1.59 und die neueste PPA ist auf 1.55, daher ist das Erstellen aus der Quelle relevant
TemplateRex
5
@ TemplateRex Ich ziehe meinen Kommentar zurück. Ich habe meine Ablehnung aufgehoben.
TBC0
83

Installieren von Boost unter Ubuntu anhand eines Beispiels für die Verwendung von boost::array:

Installieren Sie libboost-all-dev und aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

Fügen Sie dies dann in eine C ++ - Datei mit dem Namen ein 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;
}

Kompilieren Sie wie folgt:

g++ -o s main.cpp

Führen Sie es so aus:

./s

Programmdrucke:

hi1
Eric Leschinski
quelle
3
Es gibt einen Fehler in der Zeile "boost :: array <int, 4> arr = {{1,2,3,4}};", es sollte "boost :: array <int, 4> arr = {1" sein 2,3,4};
Szulak
36
Warum will ich laufen aptitude search boost?
Leedehai
23

Holen Sie sich die Version von Boost, die Sie benötigen. Dies ist für 1.55, aber Sie können es jederzeit ändern oder manuell herunterladen (Boost-Download-Seite) :

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 /

Holen Sie sich die erforderlichen Bibliotheken, die wichtigsten sind icu für die Unterstützung von boost :: regex:

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

Boosts Bootstrap-Setup:

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

Wenn wir MPI wollen, müssen wir das Flag in der Datei user-config.jam setzen:

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

Finden Sie die maximale Anzahl physischer Kerne:

n = `cat / proc / cpuinfo | grep "CPU-Kerne" | uniq | awk '{print $ NF}' `

Boost parallel installieren:

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

Angenommen, Sie haben / usr / local / lib bereits eingerichtet. Wenn nicht, können Sie es Ihrem LD LIBRARY PATH hinzufügen :

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

Setzen Sie die ldconfig zurück:

sudo ldconfig
Ahmed Elcheikh
quelle
1
Einige Dinge wie PO Edit 2.0 erfordern Boost 1.6, das derzeit nicht über apt-get verfügbar ist. Sie können dies unter boost.org/users/history/version_1_60_0.html abrufen und dann erweitern. Befolgen Sie die obigen hervorragenden Anweisungen und denken Sie daran, dass der LD Library Path nicht mit $ PATH identisch ist
Andrew Killen
Bitte ändern Sie den Link zu HTTPS. HTTP ist nicht sicher für binäre Downloads :)
Clément
1
Kommentar von einer kürzlich durchgeführten Installation, um die neueste Version zu erhalten: - Gehen Sie zu boost.org und "Current release", um die letzte herunterzuladen (derzeit 1.67.0: dl.bintray.com/boostorg/release/1.67.0/source) /… ) Danke!
Jeb
haha das macht mein system für immer kaputt. Ich denke, es sind die letzten 2 Artikel.
Thang
Der alte Link zu SourceForge funktioniert nicht. Verwenden Sie dl.bintray.com/boostorg/release/1.72.0/source/… (mit der benötigten Version)
Victor Gavro
18

Ein Update für die Windows 10 Ubuntu-Anwendung über das Subsystem (funktioniert auch unter Standard-Ubuntu):

Möglicherweise haben Sie Probleme, das Paket zu finden. Wenn Sie dies tun, fürchten Sie sich niemals! PPA ist da!

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

Dann renne:

sudo apt-get install libboost-all-dev
x4g0tt3nSou1x
quelle
1
OP hat nicht nach Win10 gefragt.
Adrian W
9
Ich bin mir bewusst, dass ich für diejenigen (wie ich) poste, die nach einer abgerundeten Lösung suchen. Ähnlich wie die Antwort von Алексей Штыков
x4g0tt3nSou1x
7
@AdrianW Bei dieser Antwort geht es nicht um Windows 10. Es geht um Ubuntu, das zufällig auf einem Windows 10-Kernel ausgeführt wird. Es ist also eine gültige Lösung für diejenigen, die Ubuntu in irgendeiner Weise ausführen . Da die Frage nicht darauf beschränkt war, dass Ubuntu speziell auf einem Linux-Kernel ausgeführt wird, ist diese Lösung in Ordnung.
Chai T. Rex
1
Das Repository ' ppa.launchpad.net/boost-latest/ppa/ubuntu xenial Release' enthält keine Release-Datei.
user239558
1

Eigentlich müssen Sie nichts "installieren" oder "kompilieren", bevor Sie Boost in Ihrem Projekt verwenden. Sie können die Boost-Bibliothek einfach herunterladen und an einen beliebigen Ort auf Ihrem Computer extrahieren, wie dies normalerweise der Fall ist /usr/local/.

Wenn Sie Ihren Code kompilieren, können Sie einfach dem Compiler angeben, wo sich die Bibliotheken befinden -I. Zum Beispiel g++ -I /usr/local/boost_1_59_0 xxx.hpp.

jimmy.zhao
quelle
10
Dies würde nur für Header-Bibliotheken von Boost funktionieren. Der Rest von ihnen müsste mit einem Paketmanager erstellt oder installiert werden, wie in den obigen Antworten beschrieben. Die Boost-Bibliotheken, die eine separate Erstellung und Installation erfordern, sind die folgenden: Atomic, Chrono, Container, Kontext, Coroutine, Coroutine2, Datum_Zeit, Ausnahme, Dateisystem, Grafik, Graph_Parallel, Iostreams, Gebietsschema, Protokoll, Mathematik, MPI, Programmoptionen, Python, Zufall , Regex, Serialisierung, Signale, System, Test, Thread, Timer, type_erasure, Wave.
Elias Kouskoumvekakis
Selbst die Reparatur dieser Lösung durch Befolgen der weiteren Anweisungen von Elias Kouskoumvekakis wäre eine schlechte Idee (es sei denn, Sie haben einen guten Grund), da Paketmanager die Möglichkeit hinzufügen, Boost sehr einfach auf neuere Versionen sudo apt update; sudo apt upgradezu aktualisieren (in Ubuntu nur ein Upgrade aller Pakete auf die neuesten Versionen in den Repositorys), wenn Sie das entsprechende Paket-Repository für Boost finden und Boost ganz einfach aus dem System löschen können, wenn Sie möchten. Der manuelle Ansatz erschwert diese Aufgaben. Sie benötigen also einen guten Grund, auf die Vorteile eines Paketmanagers zu verzichten.
Chai T. Rex
1
Die Installation ohne Paketmanager wird in einer früheren Antwort , die die erforderlichen Bauanweisungen enthält, besser behandelt .
Chai T. Rex