Jak zainstalować Boost na Ubuntu

489

Jestem na Ubuntu i chcę zainstalować Boost. Próbowałem z

sudo apt-get install boost

Ale nie było takiego pakietu. Jak najlepiej zainstalować Boost na Ubuntu?

k53sc
źródło

Odpowiedzi:

849

Możesz użyć apt-getpolecenia (wymaga sudo)

sudo apt-get install libboost-all-dev

Lub możesz zadzwonić

aptitude search boost

znajdź potrzebne pakiety i zainstaluj je za pomocą apt-getpolecenia.

Anton Guryanov
źródło
3
czy masz jakieś wcześniejsze doświadczenia z boostem?
k53sc
1
Miałem doświadczenie w programowaniu ze wzmocnieniem, ale nie miałem doświadczenia instalacyjnego. Sam nigdy tego nie próbowałem, więc nie mogę powiedzieć, czy jest łatwy w użyciu (ale wydaje mi się, że menedżer pakietów jest najprostszym sposobem). Powinienem opublikować tę sugestię jako komentarz, ale nie mogę komentować pytań.
Anton Guryanov,
71
Jedną wadą korzystania z apt-get jest to, że zwykle jest to kilka wersji najnowszej wersji boost.
Ralf,
6
Łatwo jest zbudować i zainstalować Boost ze źródeł, na przykład anycoder.wordpress.com/2014/04/28/building-boost
Andrew Selivanov
5
Nie używaj paczkowanej wersji boost, teraz na Ubuntu 16.04 to 1.58, a najnowsza stabilna wersja to 1.67.0! Zobacz odpowiedź i mój komentarz poniżej: stackoverflow.com/a/41272796/2617716
Jeb
182

Uzyskaj wymaganą wersję wzmocnienia. Dotyczy to wersji 1.55, ale możesz je zmienić lub pobrać samodzielnie:

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/

Uzyskaj wymagane biblioteki, główne z nich służą icudo boost::regexobsługi:

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

Konfiguracja ładowania początkowego:

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

Następnie zbuduj go za pomocą:

./b2

i ostatecznie zainstaluj:

sudo ./b2 install
użytkownik3715812
źródło
2
Jaka będzie różnica, jeśli użyjemy ./bootstrap.sh --prefix = / usr / include? Mam bibliotekę boost w / usr / include. Zastanawiałem się, czy robiąc to, czy mogę wymienić moją starą instalację?
Sai
40
co to jest libboost-all-dev? dlaczego powinienem zainstalować boost przed instalacją boost?
javapowered
23
również ./b2 installpowinien zostać wykonany jako ostatni krok
javapowered
21
@ tbc0 Zwiększenie jest teraz w wersji 1.59, a najnowsza PPA jest w wersji 1.55, więc istotne jest tworzenie ze źródła
TemplateRex
5
@TemplateRex Wycofuję mój komentarz. Cofnąłem swoje zdanie.
tbc0
83

Instalacja Boost na Ubuntu na przykładzie użycia boost::array:

Zainstaluj libboost-all-dev i aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

Następnie wklej to do pliku C ++ o nazwie 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;
}

Skompiluj w ten sposób:

g++ -o s main.cpp

Uruchom tak:

./s

Program drukuje:

hi1
Eric Leschinski
źródło
3
Wystąpił błąd w wierszu „boost :: array <int, 4> arr = {{1,2,3,4}};”, powinno być „boost :: array <int, 4> arr = {1 , 2,3,4}; "
szulak
36
dlaczego chcę biegać aptitude search boost?
Leedehai,
23

Uzyskaj wymaganą wersję wzmocnienia. Dotyczy to wersji 1.55, ale możesz je zmienić lub pobrać samodzielnie (strona pobierania doładowania) :

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 /

Uzyskaj wymagane biblioteki, główne z nich są dostępne dla wsparcia boost :: regex:

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

Konfiguracja ładowania początkowego:

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

Jeśli chcemy MPI, musimy ustawić flagę w pliku user-config.jam:

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

Znajdź maksymalną liczbę rdzeni fizycznych:

n = `cat / proc / cpuinfo | grep "rdzenie procesora" | uniq | awk '{print $ NF}' '

Zainstaluj boost równolegle:

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

Zakłada, że ​​masz już konfigurację / usr / local / lib . jeśli nie, możesz dodać go do ŚCIEŻKI BIBLIOTEKI LD :

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

Zresetuj ldconfig:

sudo ldconfig
Ahmed Elcheikh
źródło
1
Niektóre rzeczy, takie jak PO Edit 2.0, wymagają doładowania 1.6, które obecnie nie jest dostępne za pośrednictwem apt-get, możesz to uzyskać ze boost.org/users/history/version_1_60_0.html, a następnie rozwinąć. Postępuj zgodnie z powyższymi doskonałymi instrukcjami, pamiętając, że ścieżka biblioteki LD nie jest taka sama jak $ PATH
Andrew Killen
Zmień link na HTTPS; HTTP nie jest bezpieczny dla plików binarnych :)
Clément
1
Komentarz z ostatniej instalacji, aby uzyskać najnowszą wersję: - Przejdź do strony boost.org i „Aktualne wydanie”, aby pobrać ostatnią (obecnie 1.67.0: dl.bintray.com/boostorg/release/1.67.0/source /… ) Dzięki!
Jeb
haha to zepsuło mój system na dobre. myślę, że to ostatnie 2 elementy.
Thang
stary link do sourceforge nie działa. użyj dl.bintray.com/boostorg/release/1.72.0/source/… (z potrzebną wersją)
Victor Gavro
18

Aktualizacja aplikacji systemu Windows 10 Ubuntu za pośrednictwem podsystemu (działa również na standardowym systemie Ubuntu):

Możesz mieć problemy ze znalezieniem pakietu. Jeśli tak, nigdy się nie bój! PPA jest tutaj!

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

Następnie uruchomić:

sudo apt-get install libboost-all-dev
x4g0tt3nSou1x
źródło
1
OP nie poprosił o Win10.
Adrian W
9
Wiem, wysyłając posty dla tych (jak ja), którzy szukali zaokrąglonego rozwiązania. Podobne do odpowiedzi Алексей
Штыков
7
@AdrianW ta odpowiedź nie dotyczy Windows 10. Chodzi o Ubuntu, który akurat działa na jądrze Windows 10 , więc jest to prawidłowe rozwiązanie dla tych, którzy w jakiś sposób używają Ubuntu. Ponieważ pytanie nie ograniczyło go do Ubuntu działającego konkretnie na jądrze Linuksa, to rozwiązanie jest w porządku.
Chai T. Rex
1
Repozytorium „ ppa.launchpad.net/boost-latest/ppa/ubuntu xenial Release” nie ma pliku Release.
user239558,
1

W rzeczywistości nie potrzebujesz niczego „instalować” ani „kompilować” przed użyciem Boost w swoim projekcie. Możesz po prostu pobrać i wyodrębnić bibliotekę Boost w dowolnym miejscu na komputerze, co zwykle jest podobne /usr/local/.

Kiedy kompilujesz swój kod, możesz po prostu wskazać kompilatorowi, gdzie znaleźć biblioteki -I. Na przykład g++ -I /usr/local/boost_1_59_0 xxx.hpp.

jimmy.zhao
źródło
10
Działa to tylko w przypadku bibliotek nagłówków boost. Resztę należy zbudować lub zainstalować przy użyciu menedżera pakietów, jak opisano w powyższych odpowiedziach. Biblioteki rozszerzeń, które wymagają osobnego zbudowania i instalacji, to: atomowy, chrono, kontener, kontekst, coroutine, coroutine2, data_godzina, wyjątek, system plików, wykres, wykres_równoległy, iostreams, ustawienia regionalne, log, matematyka, mpi, opcje_programu, python, losowy , wyrażenie regularne, serializacja, sygnały, system, test, wątek, minutnik, typ_waga, fala.
Elias Kouskoumvekakis
Nawet naprawa tego rozwiązania, postępując zgodnie z dalszymi instrukcjami Eliasa Kouskoumvekakisa, byłaby złym pomysłem (chyba że masz dobry powód), ponieważ menedżerowie pakietów dodają możliwość bardzo łatwej aktualizacji Boost do nowszych wersji (w Ubuntu wystarczy sudo apt update; sudo apt upgradeuaktualnić wszystkie swoje pakiety do najnowsze wersje w repozytoriach), jeśli znajdziesz odpowiednie repozytorium pakietów dla Boost i bardzo łatwo możesz usunąć Boost z systemu, jeśli chcesz. Podejście ręczne sprawia, że ​​zadania te są trudniejsze, dlatego potrzebujesz dobrego powodu, aby pominąć zalety menedżera pakietów.
Chai T. Rex
1
Również instalacja bez menedżera pakietów jest lepiej opisana we wcześniejszej odpowiedzi , która zawiera niezbędne instrukcje budowania.
Chai T. Rex