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
./bootstrap.sh --prefix=/opt/boost
./b2 install
./b2 -j8 install
./b2 cxxflags="--std=c++17" -j8 install
単独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
rm -rf bin.v2