1) Это эквивалентно sudo apt-get install libboost-all-dev
Нет.sudo apt-get install libboost-all-dev
установит любую x.y.z
версию буст-библиотек, которую ваш дистрибутив (Debian, Ubuntu ...?) Упаковал как libboost-all-dev
в последних обновлениях пакетов, которые вы применили к вашей системе.На моей системе Ubuntu 18.04 это сейчас 1.65.1.Сборка и установка tarball boost_1_68_0.tar.bz2
, который вы скачали, конечно, даст вам версию 1.68.0.
Если ваш менеджер пакетов предоставляет libboost-all-dev
в версии 1.68.0 (или ту же версию, что и ваша загрузка какsource), а затем сборка и установка из исходного архива tarball предоставит вашим проектам клиентов Boost точно такие же ресурсы Boost с помощью компиляции и компоновки, что и при установке пакета libboost-all-dev
.
Но установка этого пакета не создаст егокаталоги и файлы в вашей файловой системе, как сборка и установка исходного архива, если только с ./bootstrap.sh
не настроены те же пути установки (--prefix
, --includedir
, --libdir
...), которые используются при установке пакета apt
,Так, например, My apt
установка libboost-all-dev
устанавливает заголовки повышения в /usr/include/boost
и двоичные файлы библиотеки повышения в /usr/lib/x86_64-linux-gnu
.Но по умолчанию при установке исходного архива tarball заголовки будут помещены в /usr/local/include/boost
, а в двоичные файлы библиотеки - в /usr/local/lib
.
. Для данной версии boost единственное другое отличие между apt install libboost-all-dev
и исходной сборкой иустановка с префиксом установки по умолчанию (/usr/local
) заключается в том, что после сборки и установки исходного кода, если вы хотите связать и запустить свои программы с библиотеками boost shared (не статичными), вам нужно будет запустить$ sudo ldconfig
(в любом каталоге), чтобы обновить динамический кеш загрузчика ОС.apt install libboost-all-dev
автоматически обновит кэш ldconfig
.
Интересно, почему он не находится в / usr / local, где он должен находиться в соответствии с настройками по умолчанию для bootstrap.sh для опции --prefix?
Это потому, чтоВы только что встроили boost, но не установили его.Вы пробежали
./bootstrap.sh
в /opt/boost_1_68_0
, и когда он закончил, он сказал вам (среди прочего)
Bootstrapping is done. To build, run:
./b2
Итак, как вы говорите, вы пробежали ./b2
.То есть для сборки .И когда строительство закончилось, вы увидели результат, который вы опубликовали.Он сообщает вам, что ваша успешная ускоренная сборка теперь может использоваться в клиентских проектах, указав параметр поиска компилятора -I/opt/boost_1_68_0
и параметр поиска компоновщика -L/opt/boost_1_68_0/stage/lib
.Вы можете использовать такие библиотеки повышения в директории build /opt/boost_1_68_0
, , не устанавливая их .Это было бы то, что вам нужно было бы сделать, если бы у вас не было привилегий root в вашей системе.
Но если вы снова посмотрите на инструкции , на которые вы ссылались, вы найдете:
5.1 Простая сборка и установка
Введите следующие команды в оболочке (не вводите $; это означает приглашение оболочки):
Выберите вашопций конфигурации и снова вызовите ./bootstrap.sh без опции --help.Если у вас нет разрешения на запись в каталог / usr / local / вашей системы, вы, вероятно, захотите по крайней мере использовать
$ ./bootstrap.sh --prefix=path/to/installation/prefix
для установки в другом месте.Кроме того, рассмотрите возможность использования параметров --show-library и --with-library = library-name-list, чтобы ограничить длительное ожидание, которое вы получите, если соберете все.Наконец,
$ ./b2 install
Вы не запустили ./b2 install
, и если для указанной вами установки или установки по умолчанию --prefix
требуется право root для записи - как в случае с /usr/local
по умолчанию -затем вам нужно запустить
$ sudo ./b2 install
После этого вы увидите заголовки и библиотеки повышения в /usr/local/include/boost
и /usr/local/lib
соответственно, и вам не нужно будет указывать какие-либо явные -I
или -L
опций для компиляции заголовков повышения или библиотек повышения ссылок, потому что /usr/local/include
- это путь поиска по умолчанию для компилятора, а /usr/local/lib
- путь поиска по умолчанию для компоновщика.