Невозможно собрать надстройку на Linux с поддержкой bz2

Скачал boost 1.66, разархивировал, запустив бутстрап:

Bootstrapping is done. To build, run:
./b2

b2 сообщает:

...blablabla..
- zlib                     : yes (cached)
- bzip2                    : yes (cached)
...blablabla..
The following directory should be added to linker library paths:
/home/steve/boost_1_66_0/stage/lib
...blablabla..

Никаких ошибок во время сборки, только предупреждения. Я смотрю в / home / steve / boost_1_66_0 / stage / lib, но нет файлов с BZ во имя На Windows готовые двоичные файлы у меня есть:

boost_bzip2-vc140-mt-gd-x64-1_66.dll
boost_bzip2-vc140-mt-gd-x64-1_66.lib
boost_bzip2-vc140-mt-x64-1_66.dll
boost_bzip2-vc140-mt-x64-1_66.lib

В результате мой проект прекрасно работает на Windows и терпит неудачу на Linux из-за отсутствия зависимостей bz2. Есть идеи?

Мой Linux — Ubuntu 14.

Thanx.

0

Решение

Есть идеи?

Ага. Ты ищешь призраков. На Linux, libz а также libbz2 являются упакованными версиями по умолчанию:

cd custom/boost_1.66.0/
ldd ldd stage/lib/libboost_iostreams.so.1.66.0

Печать

linux-vdso.so.1 => (0x00007fffe9708000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc3399af000)
libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007fc33979f000)

liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fc33957d000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc3391f5000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc338fde000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc338dc1000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc3389f7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc3387f3000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc3384ea000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc339de5000)

Библиотека является частью пакета « libbz2-1.0`, который вы можете найти с помощью

dpkg --search /lib/x86_64-linux-gnu/libbz2.so.1.0
libbz2-1.0:amd64: /lib/x86_64-linux-gnu/libbz2.so.1.0

Поэтому, если вы хотите собрать boost с поддержкой bzip2, убедитесь, что вы установили пакет разработки:

sudo apt install libbz2-dev

На самом деле, я часто «ленивый» и просто устанавливаю зависимости из пакетов distro boost:

sudo apt build-dep libboost-all-dev

Похоже, что вы получили эту часть, так что вы искали «дополнительные библиотеки», которые не существуют.

2

Другие решения

Хорошо, я обнаружил, что в Linux и Windows вам нужны разные библиотеки для работы потоков bz2. Я использую cmake, и вот как я решил это:

if (MSVC)
find_package(Boost COMPONENTS system filesystem bzip2 REQUIRED)
endif()
if(LINUX)
find_package(Boost COMPONENTS system filesystem iostreams REQUIRED)
endif()

в противном случае компоновщик выдает ошибки как в Windows, так и в Linux.

0