Cách cài đặt Boost trên Ubuntu


489

Tôi đang dùng Ubuntu và tôi muốn cài đặt Boost. Tôi đã thử với

sudo apt-get install boost

Nhưng không có gói đó. Cách tốt nhất để cài đặt Boost trên Ubuntu là gì?

Câu trả lời:


850

Bạn có thể sử dụng apt-getlệnh (yêu cầu sudo)

sudo apt-get install libboost-all-dev

Hoặc bạn có thể gọi

aptitude search boost

tìm các gói bạn cần và cài đặt chúng bằng apt-getlệnh.


3
Bạn có bất kỳ kinh nghiệm trong quá khứ với boost?
k53sc

1
Tôi đã có kinh nghiệm lập trình với boost, nhưng không có kinh nghiệm cài đặt. Tôi chưa bao giờ thử bản thân mình, vì vậy tôi không thể nói nó có dễ sử dụng không (nhưng đối với tôi, quản lý gói là cách dễ nhất). Tôi nên đăng đề nghị này như một bình luận, nhưng tôi không thể bình luận câu hỏi.
Anton Guryanov

72
Một nhược điểm của việc sử dụng apt-get là nó thường là một vài phiên bản đằng sau phiên bản boost mới nhất.
Ralf

6
Thật dễ dàng để xây dựng và cài đặt Boost từ các nguồn, ví dụ anycoder.wordpress.com/2014/04/11/building-boost
Andrew Selivanov

5
Không sử dụng phiên bản tăng cường đóng gói, ngay bây giờ trên Ubuntu 16.04 là 1.58 và phiên bản ổn định mới nhất là 1.67.0! Xem phản hồi và nhận xét của tôi dưới đây: stackoverflow.com/a/41272796/2617716
Jeb

182

Nhận phiên bản Boost mà bạn yêu cầu. Đây là 1,55 nhưng hãy tự thay đổi hoặc tự tải xuống:

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/

Nhận các thư viện cần thiết, những thư viện chính là icuđể được boost::regexhỗ trợ:

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

Thiết lập bootstrap của Boost:

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

Sau đó xây dựng nó với:

./b2

và cuối cùng cài đặt nó:

sudo ./b2 install

2
Điều gì sẽ là sự khác biệt nếu chúng ta sử dụng ./bootstrap.sh --prefix = / usr / bao gồm? Tôi có thư viện boost trong / usr / bao gồm. Tôi đã tự hỏi rằng bằng cách này, tôi có thể thay thế cài đặt cũ của tôi?
Sai

40
libboost-all-dev là gì? Tại sao tôi nên cài đặt boost trước khi cài đặt boost?
javapowered

23
cũng ./b2 installnên được thực hiện như bước cuối cùng
javapowered

21
@ tbc0 Boost hiện đang ở phiên bản 1.59 và PPA mới nhất là 1,55, do đó, việc xây dựng từ nguồn có liên quan
TemplateRex

5
@TemplateRex Tôi rút lại nhận xét của mình. Tôi hoàn tác downvote của tôi.
tbc0

83

Cài đặt Boost trên Ubuntu với một ví dụ về việc sử dụng boost::array:

Cài đặt libboost-all-dev và aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

Sau đó dán tệp này vào tệp C ++ có tên 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;
}

Biên dịch như thế này:

g++ -o s main.cpp

Chạy nó như thế này:

./s

Chương trình in:

hi1

3
Có lỗi trong dòng "boost :: Array <int, 4> Array = {{1,2,3,4}};", đó phải là "boost :: mảng <int, 4> Array = {1 , 2,3,4}; "
szulak

36
tại sao tôi muốn chạy aptitude search boost?
Leedehai

23

Nhận phiên bản Boost mà bạn yêu cầu. Đây là 1,55 nhưng hãy tự thay đổi hoặc tự tải xuống (Trang tải xuống 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/doad
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0 /

Nhận các thư viện cần thiết, những thư viện chính là icu để hỗ trợ boost :: regex:

sudo apt-get cập nhật
sudo apt-get install build-Essential g ++ python-dev autotools-dev libicu-dev libbz2-dev 

Thiết lập bootstrap của Boost:

./bootstrap.sh --prefix = / usr / cục bộ

Nếu chúng ta muốn MPI thì chúng ta cần đặt cờ trong tệp user-config.jam:

user_configFile = `tìm $ PWD -name user-config.jam`
echo "sử dụng mpi;" >> $ user_configFile

Tìm số lõi vật lý tối đa:

n = `mèo / Proc / cpuinfo | grep "lõi cpu" | uniq | awk '{in $ NF}' `

Cài đặt tăng song song:

sudo ./b2 --with = tất cả -j $ n cài đặt 

Giả sử bạn đã thiết lập / usr / local / lib . nếu không, bạn có thể thêm nó vào LD LIBRARY PATH của bạn :

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

Đặt lại ldconfig:

sudo ldconfig

1
Một số thứ như PO Edit 2.0 yêu cầu boost 1.6, hiện không có sẵn thông qua apt-get, bạn có thể lấy thứ này từ boost.org/users/history/version_1_60_0.html và sau đó mở rộng nó. Thực hiện theo các hướng dẫn tuyệt vời ở trên, hãy nhớ rằng Đường dẫn Thư viện LD không giống với $ PATH
Andrew Killen

Vui lòng thay đổi liên kết đến HTTPS; HTTP không an toàn để tải xuống nhị phân :)
Clément

1
Nhận xét từ bản cài đặt gần đây, để có phiên bản mới nhất: - Truy cập vào các bản tải xuống boost.org và "Bản phát hành hiện tại" để lấy bản cuối cùng (hiện là 1.67.0: dl.bintray.com/boostorg/release/1.67.0/source / Càng ) Cảm ơn!
Jeb

haha cái ốc vít này lên hệ thống của tôi cho tốt. Tôi nghĩ đó là 2 mục cuối cùng.
thang

liên kết cũ đến sourceforge không hoạt động. sử dụng dl.bintray.com/boostorg/release/1.72.0/source/ khăn (với phiên bản cần thiết)
Victor Gavro

18

Bản cập nhật cho Ứng dụng Ubuntu Windows 10 thông qua Hệ thống con (cũng hoạt động trên Ubuntu tiêu chuẩn):

Bạn có thể gặp vấn đề khi tìm gói. Nếu bạn làm, đừng bao giờ sợ hãi! PPA là đây!

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

Sau đó chạy:

sudo apt-get install libboost-all-dev

1
OP đã không yêu cầu Win10.
Adrian W

9
Tôi biết, đăng bài cho những người (Giống như tôi), những người đang tìm kiếm một giải pháp tròn. Tương tự như câu trả lời của
летткк Шт

7
@AdrianW câu trả lời này không phải về Windows 10. Đó là về Ubuntu tình cờ chạy trên kernel Windows 10 , vì vậy đây là một giải pháp hợp lệ cho những người chạy Ubuntu theo một cách nào đó. Vì câu hỏi không giới hạn nó với Ubuntu chạy trên nhân Linux, nên giải pháp này vẫn ổn.
Chai T. Rex

1
Kho lưu trữ ' ppa.launchpad.net/boost-latest/ppa/ubfox xenial Release' không có tệp Phát hành.
user239558

1

Thực tế bạn không cần "cài đặt" hoặc "biên dịch" bất cứ điều gì trước khi sử dụng Boost trong dự án của bạn. Bạn chỉ có thể tải xuống và trích xuất thư viện Boost đến bất kỳ vị trí nào trên máy của bạn, thường là như thế /usr/local/.

Khi bạn biên dịch mã của mình, bạn chỉ có thể chỉ ra trình biên dịch nơi tìm các thư viện theo -I. Ví dụ , g++ -I /usr/local/boost_1_59_0 xxx.hpp.


10
Điều này sẽ chỉ làm việc cho các thư viện tiêu đề của boost. Phần còn lại của chúng sẽ cần phải được xây dựng hoặc cài đặt bằng trình quản lý gói như được mô tả trong các câu trả lời ở trên. Các thư viện tăng cường yêu cầu xây dựng và cài đặt riêng biệt như sau: nguyên tử, chrono, container, bối cảnh, coroutine, coroutine2, date_time, ngoại lệ, hệ thống tập tin, đồ thị, đồ thị, biểu đồ , regex, serialization, tín hiệu, hệ thống, kiểm tra, luồng, bộ đếm thời gian, type_erasure, wave.
Elias Kouskoumvekakis

Ngay cả việc sửa chữa giải pháp này bằng cách làm theo hướng dẫn thêm của Elias Kouskoumvekakis cũng là một ý tưởng tồi (trừ khi bạn có lý do chính đáng), vì các nhà quản lý gói thêm khả năng cập nhật Boost rất dễ dàng lên các phiên bản mới hơn (trong Ubuntu, chỉ là sudo apt update; sudo apt upgradeđể nâng cấp tất cả các gói của bạn lên các phiên bản mới nhất trong kho) nếu bạn tìm thấy kho lưu trữ gói thích hợp cho Boost và rất dễ dàng xóa Boost khỏi hệ thống nếu bạn muốn. Cách tiếp cận thủ công làm cho những nhiệm vụ đó khó hơn, vì vậy bạn cần một lý do chính đáng để bỏ qua những lợi ích của người quản lý gói.
Chai T. Rex

1
Ngoài ra, cài đặt mà không có trình quản lý gói sẽ được đề cập tốt hơn trong câu trả lời trước đó , bao gồm các hướng dẫn xây dựng cần thiết.
Chai T. Rex
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.