已下载的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
结果,由于缺少bz2依赖项,我的项目在Windows上运行良好,而在Linux上失败。有任何想法吗?
我的Linux是ubuntu 14。
谢谢
最佳答案
有任何想法吗?
对。您正在寻找鬼魂。在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
因此,如果要使用bzip2支持构建增强功能,请确保安装了开发包:
sudo apt install libbz2-dev
实际上,我经常是“懒惰”的,只是从发行版boost软件包安装依赖项:
sudo apt build-dep libboost-all-dev
看起来您已覆盖了该部分,因此您正在寻找不存在的“额外库”。
关于c++ - 无法在具有bz2支持的linux上构建boost,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49557595/