Как установить Boost на Ubuntu


489

Я на Ubuntu, и я хочу установить Boost. Я пробовал с

sudo apt-get install boost

Но такого пакета не было. Каков наилучший способ установить Boost на Ubuntu?

Ответы:


850

Вы можете использовать apt-getкоманду (требуется sudo)

sudo apt-get install libboost-all-dev

Или вы можете позвонить

aptitude search boost

найдите нужные пакеты и установите их с помощью apt-getкоманды.


3
у тебя есть какой-то опыт с бустом?
k53sc

1
У меня был опыт программирования с boost, но не опыта установки. Я никогда не пробовал это сам, поэтому не могу сказать, насколько это легко (но мне кажется, что менеджер пакетов - самый простой способ). Я должен был опубликовать это предложение как комментарий, но я не могу комментировать вопросы.
Антон Гурьянов

72
Единственный недостаток использования apt-get заключается в том, что обычно за последней версией буста стоит пара версий.
Ральф

6
Легко собрать и установить Boost из исходных кодов,
Андрей Селиванов

5
Не используйте упакованную версию boost, сейчас на Ubuntu 16.04 это 1.58, а последняя стабильная версия 1.67.0! Смотрите ответ и мой комментарий ниже: stackoverflow.com/a/41272796/2617716
Джеб

182

Получите версию Boost, которая вам требуется. Это для 1.55, но вы можете изменить или загрузить вручную:

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/

Получить необходимые библиотеки, основные из которых icuдля boost::regexподдержки:

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

Начальная настройка Boost:

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

Затем создайте его с помощью:

./b2

и в итоге установить его:

sudo ./b2 install

2
Какая будет разница, если мы используем ./bootstrap.sh --prefix = / usr / include? У меня есть библиотека повышения в / usr / include. Мне было интересно, что, делая это, я могу заменить мою старую установку?
Саи

40
что такое libboost-all-dev? почему я должен установить boost перед установкой boost?
javapowered

23
также ./b2 installдолжен быть выполнен в качестве последнего шага
javapowered

21
@ tbc0 Boost сейчас в версии 1.59, а последний PPA - в 1.55, так что сборка из источника актуальна
TemplateRex

5
@TemplateRex Я убираю свой комментарий. Я отменил свое понижение.
tbc0

83

Установка Boost на Ubuntu с примером использования boost::array :

Установите libboost-all-dev и aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

Затем вставьте это в файл C ++ с именем 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;
}

Скомпилируйте так:

g++ -o s main.cpp

Запустите это так:

./s

Программа печатает:

hi1

3
В строке "boost :: array <int, 4> arr = {{1,2,3,4}};" есть ошибка, это должно быть "boost :: array <int, 4> arr = {1 , 2,3,4};»
szulak

36
почему я хочу бежать aptitude search boost?
Leedehai

24

Получите версию Boost, которая вам требуется. Это для 1,55, но вы можете изменить или загрузить вручную (страница загрузки 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/download
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0 /

Получите необходимые библиотеки, основные из них для поддержки boost :: regex:

sudo apt-get update
sudo apt-get установить build-essential g ++ python-dev autotools-dev libicu-dev libbz2-dev 

Начальная настройка Boost:

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

Если мы хотим MPI, тогда нам нужно установить флаг в файле user-config.jam:

user_configFile = `find $ PWD -name user-config.jam`
echo "используя mpi;" >> $ user_configFile

Найдите максимальное количество физических ядер:

n = `cat / proc / cpuinfo | grep "процессорные ядра" | Uniq | awk '{print $ NF}' `

Установите буст параллельно:

sudo ./b2 --with = all -j $ n установить 

Предполагается, что у вас уже есть / usr / local / lib . если нет, вы можете добавить его в свой LD LIBRARY PATH :

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

Сбросьте ldconfig:

sudo ldconfig

1
Некоторые вещи, такие как PO Edit 2.0, требуют boost 1.6, который в настоящее время недоступен через apt-get, вы можете получить это на boost.org/users/history/version_1_60_0.html и затем развернуть его. Следуйте приведенным выше превосходным инструкциям, помня, что путь к библиотеке LD отличается от $ PATH
Эндрю Киллен,

Пожалуйста, измените ссылку на HTTPS; HTTP не безопасен для бинарных загрузок :)
Clément

1
Прокомментируйте недавнюю установку, чтобы получить последнюю версию: - Перейдите на веб-сайт boost.org и загрузку «Текущая версия» , чтобы получить последнюю версию (в настоящее время 1.67.0: dl.bintray.com/boostorg/release/1.67.0/source /… ) Спасибо!
Джеб

хаха это испортит мою систему навсегда. Я думаю, что это последние 2 пункта.
Тханг

старая ссылка на sourceforge не работает. используйте dl.bintray.com/boostorg/release/1.72.0/source/… (с необходимой версией)
Виктор Гавро

18

Обновление для приложения Windows 10 Ubuntu через подсистему (также работает на стандартном Ubuntu):

У вас могут быть проблемы с поиском посылки. Если да, никогда не бойся! ППА здесь!

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

Затем запустите:

sudo apt-get install libboost-all-dev

1
ОП не просил Win10.
Адриан Вт

9
Я в курсе, отправляю сообщения тем (как я), которые искали округлое решение. Аналогичен ответу Алексея Штыкова
x4g0tt3nSou1x

7
@AdrianW этот ответ не о Windows 10. Речь идет об Ubuntu, который работает на ядре Windows 10 , так что это верное решение для тех, кто работает с Ubuntu в некотором роде. Поскольку этот вопрос не ограничивался только Ubuntu, работающим на ядре Linux, это решение подходит.
Чай Т. Рекс

1
В хранилище ppa.launchpad.net/boost-latest/ppa/ubuntu xenial Release нет файла Release.
user239558

1

На самом деле вам не нужно ничего «устанавливать» или «компилировать» перед использованием Boost в вашем проекте. Вы можете просто скачать и распаковать библиотеку Boost в любое место на вашем компьютере, как это обычно бывает /usr/local/.

Когда вы компилируете свой код, вы можете просто указать компилятору, где искать библиотеки -I. Например, g++ -I /usr/local/boost_1_59_0 xxx.hpp.


10
Это будет работать только для библиотек заголовка boost. Остальные из них должны быть собраны или установлены с использованием менеджера пакетов, как описано в ответах выше. Надлежащие библиотеки, которые требуют отдельного построения и установки, следующие: атомарные, хронологические, контейнерные, контекстные, сопрограммные, coroutine2, date_time, исключение, файловая система, граф, graph_parallel, iostreams, языковой стандарт, журнал, математика, mpi, program_options, python, random , регулярное выражение, сериализация, сигналы, система, тест, поток, таймер, type_erasure, волна.
Элиас Кускумвекакис

Даже исправлять это решение, следуя дальнейшим инструкциям Элиаса Кускумвекакиса, было бы плохой идеей (если у вас нет веских причин), поскольку менеджеры пакетов добавляют возможность очень легко обновлять Boost до более новых версий (в Ubuntu достаточно просто sudo apt update; sudo apt upgradeобновить все ваши пакеты до последние версии в репозиториях), если вы найдете подходящий репозиторий пакетов для Boost и очень легко удалите Boost из системы, если хотите. Ручной подход усложняет эти задачи, поэтому у вас должна быть веская причина, чтобы пропустить преимущества менеджера пакетов.
Чай Т. Рекс

1
Кроме того, установка без менеджера пакетов лучше описана в предыдущем ответе , который включает в себя необходимые инструкции по сборке.
Чай Т. Рекс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.