Cara menginstal Boost di Ubuntu

489

Saya di Ubuntu, dan saya ingin menginstal Boost. Saya mencoba

sudo apt-get install boost

Tetapi tidak ada paket seperti itu. Apa cara terbaik untuk menginstal Boost di Ubuntu?

k53sc
sumber

Jawaban:

850

Anda dapat menggunakan apt-getperintah (membutuhkan sudo)

sudo apt-get install libboost-all-dev

Atau Anda bisa menelepon

aptitude search boost

temukan paket yang Anda butuhkan dan instal dengan menggunakan apt-getperintah.

Anton Guryanov
sumber
3
apakah Anda memiliki pengalaman masa lalu dengan peningkatan?
k53sc
1
Saya memiliki pengalaman pemrograman dengan boost, tetapi bukan pengalaman instalasi. Saya belum pernah mencobanya sendiri, jadi saya tidak bisa mengatakan apakah itu mudah digunakan (tetapi bagi saya paket manager adalah cara termudah). Saya seharusnya memposting saran ini sebagai komentar, tetapi saya tidak bisa berkomentar.
Anton Guryanov
72
Satu-satunya kelemahan menggunakan apt-get adalah bahwa itu biasanya beberapa versi di belakang rilis boost terbaru.
Ralf
6
Sangat mudah untuk membangun dan menginstal Boost dari sumber, misalnya anycoder.wordpress.com/2014/04/28/building-boost
Andrew Selivanov
5
Jangan gunakan versi paket boost, saat ini di Ubuntu 16.04 itu 1.58, dan versi stabil terbaru adalah 1.67.0! Lihat tanggapan dan komentar saya di bawah ini: stackoverflow.com/a/41272796/2617716
Jeb
182

Dapatkan versi Peningkatan yang Anda butuhkan. Ini untuk 1,55 tetapi merasa bebas untuk mengubah atau mengunduh sendiri secara manual:

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/

Dapatkan perpustakaan yang diperlukan, yang utama adalah icuuntuk boost::regexdukungan:

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

Pengaturan bootstrap Boost:

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

Kemudian bangun dengan:

./b2

dan akhirnya menginstalnya:

sudo ./b2 install
pengguna3715812
sumber
2
Apa perbedaannya jika kita menggunakan ./bootstrap.sh --prefix = / usr / include? Saya memiliki perpustakaan boost di / usr / include. Saya bertanya-tanya bahwa dengan melakukan ini, dapatkah saya mengganti instalasi lama saya?
Sai
40
apa itu libboost-all-dev? mengapa saya harus menginstal boost sebelum menginstal boost?
javapowered
23
juga ./b2 installharus dieksekusi sebagai langkah terakhir
javapowered
21
@ tbc0 Boost ada di versi 1.59 sekarang, dan PPA terbaru di 1.55, jadi membangun dari sumber relevan
TemplateRex
5
@TemplateRex Saya menarik kembali komentar saya. Saya membatalkan unduhan saya.
tbc0
83

Menginstal Boost di Ubuntu dengan contoh penggunaan boost::array :

Instal libboost-all-dev dan aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

Kemudian tempel ini ke file C ++ yang disebut 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;
}

Kompilasi seperti ini:

g++ -o s main.cpp

Jalankan seperti ini:

./s

Program mencetak:

hi1
Eric Leschinski
sumber
3
Ada kesalahan di baris "boost :: array <int, 4> arr = {{1,2,3,4}};", seharusnya "boost :: array <int, 4> arr = {1 , 2,3,4}; "
szulak
36
mengapa saya ingin lari aptitude search boost?
Leedehai
24

Dapatkan versi Peningkatan yang Anda butuhkan. Ini untuk 1,55 tetapi jangan ragu untuk mengubah atau mengunduh diri Anda secara manual (Tingkatkan unduhan laman) :

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 /

Dapatkan perpustakaan yang diperlukan, yang utama adalah icu untuk meningkatkan :: dukungan regex:

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

Pengaturan bootstrap Boost:

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

Jika kita menginginkan MPI maka kita perlu mengatur flag pada file user-config.jam:

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

Temukan jumlah maksimum inti fisik:

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

Instal boost secara paralel:

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

Asumsikan Anda sudah memiliki / usr / local / lib setup. jika tidak, Anda dapat menambahkannya ke PATH LD LIBRARY Anda :

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

Setel ulang ldconfig:

sudo ldconfig
Ahmed Elcheikh
sumber
1
Beberapa hal seperti PO Edit 2.0 memerlukan boost 1.6, yang saat ini tidak tersedia melalui apt-get, Anda dapat memperolehnya dari boost.org/users/history/version_1_60_0.html dan kemudian perluas. Ikuti instruksi yang sangat baik di atas, mengingat bahwa LD Library Path tidak sama dengan $ PATH
Andrew Killen
Silakan ubah tautan ke HTTPS; HTTP tidak aman untuk unduhan biner :)
Clément
1
Komentar dari instalasi terbaru, untuk mendapatkan versi terbaru: - Buka unduhan boost.org dan "Rilis saat ini" untuk mendapatkan yang terakhir (saat ini 1.67.0: dl.bintray.com/boostorg/release/1.67.0/source / ... ) Terima kasih!
Jeb
haha ini mengacaukan sistem saya untuk selamanya. saya pikir ini 2 item terakhir.
thang
tautan lama ke sourceforge tidak berfungsi. gunakan dl.bintray.com/boostorg/release/1.72.0/source/… (dengan versi yang diperlukan)
Victor Gavro
18

Pembaruan untuk Aplikasi Ubuntu Windows 10 melalui Subsistem (juga berfungsi pada Ubuntu standar):

Anda mungkin mengalami masalah menemukan paket. Jika ya, jangan pernah takut! AKP ada di sini!

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

Lalu lari:

sudo apt-get install libboost-all-dev
x4g0tt3nSou1x
sumber
1
OP tidak meminta Win10.
Adrian W
9
Saya sadar, memposting untuk mereka (Seperti saya) yang mencari solusi bulat. Mirip dengan Jawaban Алексей Штыков
x4g0tt3nSou1x
7
@AdrianW jawaban ini bukan tentang Windows 10. Ini tentang Ubuntu yang kebetulan berjalan pada kernel Windows 10 , jadi ini adalah solusi yang valid untuk mereka yang menjalankan Ubuntu dengan cara tertentu. Karena pertanyaannya tidak membatasi hanya untuk Ubuntu yang menjalankan kernel Linux, solusi ini baik-baik saja.
Chai T. Rex
1
Repositori ' ppa.launchpad.net/boost-latest/ppa/ubuntu xenial Release' tidak memiliki file Rilis.
user239558
1

Sebenarnya Anda tidak perlu "menginstal" atau "mengkompilasi" apa pun sebelum menggunakan Boost dalam proyek Anda. Anda bisa mengunduh dan mengekstrak pustaka Boost ke lokasi mana pun di mesin Anda, yang biasanya seperti itu /usr/local/.

Ketika Anda mengkompilasi kode Anda, Anda bisa menunjukkan kompiler di mana menemukan perpustakaan dengan -I. Sebagai contoh g++ -I /usr/local/boost_1_59_0 xxx.hpp,.

jimmy.zhao
sumber
10
Ini hanya akan berfungsi untuk meningkatkan header perpustakaan. Sisanya perlu dibangun atau diinstal menggunakan manajer paket seperti yang dijelaskan dalam jawaban di atas. Pustaka pendorong yang memerlukan bangunan dan instalasi terpisah adalah sebagai berikut: atom, chrono, wadah, konteks, coroutine, coroutine2, date_time, pengecualian, sistem file, grafik, graph_parallel, iostreams, lokal, log, matematika, mpi, program_options, python, acak , regex, serialisasi, sinyal, sistem, pengujian, utas, timer, type_erasure, wave.
Elias Kouskoumvekakis
Bahkan memperbaiki solusi ini dengan mengikuti instruksi lebih lanjut Elias Kouskoumvekakis akan menjadi ide yang buruk (kecuali Anda memiliki alasan yang baik), karena manajer paket menambahkan kemampuan untuk dengan mudah memperbarui Peningkatan ke versi yang lebih baru (di Ubuntu, hanya sudo apt update; sudo apt upgradeuntuk meningkatkan semua paket Anda ke versi terbaru di repositori) jika Anda menemukan repositori paket yang sesuai untuk Boost dan untuk dengan mudah menghapus Boost dari sistem jika Anda mau. Pendekatan manual membuat tugas-tugas itu lebih sulit, jadi Anda perlu alasan yang baik untuk mengabaikan manfaat dari manajer paket.
Chai T. Rex
1
Juga, menginstal tanpa manajer paket lebih baik dicakup dalam jawaban sebelumnya , yang mencakup instruksi pembangunan yang diperlukan.
Chai T. Rex