用的是boost 1.55.0,正常编译的话下面命令及参数就可以了:
1 | ./bjam --without-python --without-test --without-graph_parallel --without-graph --without-wave toolset=gcc cxxflags="-std=c++11" install |
如果要编译32位版本的话需要先安装boost需要的几个库的x86版本
1 | yum install libicu-devel.i686 |
如果是用ICU库编译boost.locale库, 那就需要第一行,如果用libiconv库去编译boost.locale库的话需要手动编译安装libiconv库,下载libiconv库,用下面的参数configure:
1 | ./configure --prefix=/usr CFLAGS="-m32" LDFLAGS="-m32" --enable-static --enable-shared --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu |
接下来编译boost:
1 | ./bjam --prefix=/usr --without-python --without-test --without-graph_parallel --without-graph --without-wave toolset=gcc address-model=32 architecture=x86 install |
最后一个参数很重要, 如果只是指定了address-model=32,会编译出大部分的boost库的x86版本, 但是会提示有几个target failed,库不完整, 尤其是boost.locale库,会提示:
- iconv (libc) : no
- iconv (separate) : no
- icu : no
- icu (lib64) : no
Boost.Locale needs either iconv or ICU library to be built`.
Boost.Locale needs either iconv or ICU library to be built.`
Boost.Locale needs either iconv or ICU library to be built.
而事实上已经安装了icu或者libiconv的正确版本,但是boost无法识别, 需要指定architecture=x86 后才会识别到,并正确安装.