如果没有说明至少一个lib,boost安装将无法安装?

时间:2013-04-25 21:17:02

标签: boost

我只想安装库的mpl和预处理器部分但是如果我使用这个命令,它会尝试构建并安装所有这些:

./bootstrap.sh --with-libraries= --prefix=<my lib path>

我看到它正在尝试,因为它正在执行编译器。使用 ./ b2 -n 也会显示正在执行的命令。

有谁知道发生了什么? - with-libraries = 的默认值应该全部来自帮助:

--with-libraries=list     build only a particular set of libraries,
                          describing using either a comma-separated list of
                          library names or "all"
                          [all]
--without-libraries=list  build all libraries except the ones listed []

Empty不应该默认为all,Empty应该是空的。未指定 - with-libraries = 应默认为all。

此外, - without-libraries = all 也不起作用。考虑到这个库已经存在了很长时间,这有点令人失望。你会认为这些人会检查这样一个简单的边界情况。 :(

2 个答案:

答案 0 :(得分:1)

除了查看所有库然后在--without-libraries = flag之后全部指定它们之外,似乎没有任何其他方法。但是,看起来它实际上没有做任何事情,这意味着,我可以将头文件夹复制到我想要的包含目录。

答案 1 :(得分:0)

根据我升级boost时的经验,运行一些测试以查看boost是否与您的系统/编译器兼容。在[我们]的情况下,我们需要filesystemsystem,所以这是我们在 boost 1_51_0 的情况下使用的方法。我希望它会有所帮助。 注意:我们只需要可以使用共享库(.so)编译的静态库(.a)。这就是为什么我们添加cxxflags=-fPIC,然后我们将.a文件复制到lib64目录。

tar xf boost_1_51_0.tar.gz
rm boost_1_51_0.tar.gz
./bootstrap.sh --with-libraries=filesystem,system --exec-prefix=$(pwd)
./b2 cxxflags=-fPIC
mkdir lib64
cp $(find . -name '*.a' -print | grep -v stage | grep release ) lib64
cd lib64
# Now you can delete any libraries you don't need.

另请注意,您可以致电./bootstrap.sh --show-libraries查看所有可用的库。