Build boost 1.64.0 with c++11

2145 ワード

build boost


1.64.0を例にとると、build boostは簡単です.build b 2
./bootstrap.sh --prefix=/opt/boost

b 2 bjam project-configが生成する.jam. --prefixはproject-configに作用する.JAmでは、build時にincludeとlibを設定するインストールディレクトリoption.set prefix : /opt/boost ; option.set exec-prefix : /opt/boost ; option.set libdir : /opt/boost/lib ; option.set includedir : /opt/boost/include ; variant=debug|release Select the build variant build boost includeとbuildの良いlibsが、前に指定したfolderにインストールされます
./b2 install

build速度を上げ、build thread number(jobs)を作成できます.
./b2 -j8 install

gcc5.4デフォルトではc++11はオンではなく、c++11の特性に依存するコードの中には有効ではないものもある.一部libはc++11の機能に依存する、この特性をサポートしなければコンパイルされない.例えばfiberは、c++11のサポートをオンにすることなくコンパイルされない.c++11のサポートを開く必要がありますgcc 5.4で、--std=c++11のみを開くとfiberはコンパイルできません.--std=c++14または--std=c++17を使用すると成功します.
./b2 cxxflags="--std=c++17"  -j8 install

b 2でよく使用されるpropertyには、ルートディレクトリの下にlink=static|shared Whether to build static or shared libraries、デフォルトbuild releaseの下にstaticとsharedがあります.

build one boost library


単独buildのlibraryが必要な場合は、/libs/***/build/でrun b 2をコンパイルしてfiberを例に挙げることができます.
cd libs/fiber/build
../../../b2  cxxflags="--std=c++17" -j8 variant=release link=shared install

buildで生成された中間ファイルはbin.v2 cj@ubuntu:/opt/boost_1_64_0/bin.v2/libs/fiber$ tree . └── build └── gcc-5.4.0 └── release └── threading-multi ├── algo │ ├── algorithm.o ... ├── libboost_fiber.so.1.64.0 ... └── timed_mutex.o

clean cached cxx11_** result


b 2 buildが開始された後、まずconfiguration checks:Performing configuration checks \- 32-bit : no (cached) \- 64-bit : yes (cached) ... \- symlinks supported : yes (cached) \- C++11 mutex : yes (cached) \- Boost.Config Feature Check: cxx11_auto_declarations : yes (cached) \- Boost.Config Feature Check: cxx11_constexpr : yes (cached) ...がcxxflagsを変更しても前回のcachedのfeature check結果は不明であり、cacheを削除する必要がある結果である
rm -rf bin.v2