c++ - 无法在支持 bz2 的 Linux 上构建 boost

标签 c++ boost bz2

下载 boost 1.66,解压缩,启动 Bootstrap :

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 上构建良好,但由于缺少 bz2 依赖项而在 Linux 上失败。有什么想法吗?

我的 linux 是 ubuntu 14。

谢谢。

最佳答案

Any ideas?

是的。你在找鬼。在linux上,libzlibbz2是默认打包的版本:

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

因此,如果您想构建支持 bzip2 的 boost,请确保您安装了开发包:

sudo apt install libbz2-dev 

事实上,我经常“偷懒”,只是安装发行版 boost 包中的依赖项:

sudo apt build-dep libboost-all-dev

看起来你已经涵盖了那部分,所以你正在寻找不存在的“额外库”。

关于c++ - 无法在支持 bz2 的 Linux 上构建 boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49557595/

相关文章:

c++ - bind<void>(ref(acc), _1) 是什么意思?

bz2 - 如何为Linux下载bzip2源代码?

python - 使用python解压bz2文件有限制吗?

c++ - 即使 QFilterKey 匹配,QRenderPassFilter 也会隐藏平面网格

c++ - Eclipse for C++ 无法识别酿造的 GSL 和 Boost 库

c++ - 使用 QtSDK 中的 mingw 构建 boost

C++ JSON 编译问题

C++ 可选与抛出

java - 返回值周围的括号 - 为什么?