MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - Boostのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - Boost
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Boostは、ピアレビューされた移植可能なC++ソースライブラリを無償で提供している。<br> C++標準ライブラリと親和性のあるライブラリを重視しており、広く有用かつ幅広いソフトウェアで使用できることを意図している。<br> <br> Boostのライセンスは、全てのユーザが最小限の制限でBoostライブラリを使用することを推奨している。<br> <br><br> == BoostにおけるOpen MPI == OpenMPI (Open Message Passing Interface) は、Boostライブラリ自体の一部ではないが、Boost.MPIというコンポーネントと密接に関連している。<br> <br> Boost.MPIは、C++でMPI (Message Passing Interface) プログラミングを行うためのインターフェースを提供するBoostライブラリである。<br> MPIは並列計算や分散メモリシステムでのプログラミングに広く使用されているAPI規格である。<br> <br> Open MPIは、このMPI規格の実装の1つである。<br> Boost.MPIは、Open MPIを含む様々なMPI実装と連携して動作するように設計されている。<br> Boost.MPIの主なメリットは、C++の抽象化を提供して、MPIプログラミングをより簡単かつ型安全にすることである。<br> <br> また、Boostの他のライブラリ (例: Boost.Serialization) との統合も図られている。<br> <br> Boost.MPIを使用する場合は、Open MPI等のMPI実装がシステムにインストールされている必要がある。<br> Boost.MPIは、これらの実装の上に構築され、より高レベルのC++インターフェースを提供する。<br> <br> Boost.MPIをビルドする場合は、システムにOpen MPI等のMPI実装がインストールされていることが前提となる。<br> Boostのビルド時には、MPI実装のヘッダーファイルとライブラリへのパスを正しく指定する必要がある。<br> <br> Boost.MPIは、基盤となるMPI実装 (Open MPI等) の性能特性を維持しつつ、C++の利点を活かしたインターフェースを提供する。<br> また、異なるMPI実装間での互換性も考慮されている。<br> <br> Open MPIはMPIの実装の1つであり、Boost.MPIはこのようなMPI実装を利用してC++で並列プログラミングを行うためのインターフェースを提供するBoostコンポーネントである。<br> Open MPIはBoost自体の一部ではないが、Boost.MPIを使用する場合の基盤となる重要なソフトウェアの1つとして位置付けられている。<br> <br><br> == Boostのインストール == ==== RHEL / SUSE ==== Boostをビルドするため、依存関係のライブラリをインストールする。<br> # SUSE sudo zypper install libicu-devel xz-devel libbz2-devel libzstd-devel python-devel python3-devel \ openmpi-devel # オプション <br> [https://www.boost.org/users/download/ Boostの公式Webサイト]にアクセスして、Boostをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf boost_<バージョン>.tar.gz cd boost_<バージョン> <br> <u>ビルド時において、コンパイラを指定する場合は、環境変数 <code>CC</code> および <code>CXX</code> を指定する。</u><br> <syntaxhighlight lang="sh"> # 例 : export CC=gcc-14; \ export CXX=g++-14 </syntaxhighlight> <br> Boostをビルドおよびインストールする。<br> # 全てインストールする場合 ./bootstrap.sh --prefix=<Boostのインストールディレクトリ> ./b2 \ --build-dir=./build \ --layout=system \ --variant=release \ install # ヘッダーファイルのみインストールする場合 ./bootstrap.sh --prefix=<Boostのインストールディレクトリ> ./b2 headers \ --build-dir=./build \ --layout=versioned \ install <br> ビルド時のオプションを、以下に示す。<br> * <code>--layout</code>オプション *: 指定しない場合、Linuxでは<code>system</code>、Windowsでは<code>versioned</code>となる。 ** versioned **: boostバイナリの名前には、Boostのバージョン番号、コンパイラ名とバージョン、エンコードされたビルドプロパティが含まれている。 **: Boostヘッダは、Boostのヘッダディレクトリ内のサブディレクトリにインストールされて、その名前にBoostのバージョン番号が付加される。 *: <br> ** tagged **: boostバイナリの名前には、variantやthreading等のエンコードされたビルドプロパティが含まれるが、コンパイラ名とバージョン、Boostのバージョンは含まれない。 **: taggedを指定する場合、同じコンパイラを使用して複数のBoostのバリアントをビルドする場合に便利である。 *: <br> ** system **: Boostバイナリの名前に、Boostのバージョン番号、コンパイラ名とバージョン番号は含まれない。 **: Boostのヘッダは、Boostのヘッダディレクトリに直接インストールされる。 **: systemを指定する場合、配布パッケージを構築するBoostの設計者を対象としている。 <br> * <code>--build-type</code>オプション *: 指定した事前定義されたライブラリのバリエーションセットをビルドする。 *: どのバリエーションがビルドされるかは、各ライブラリが何をサポートしているかに依存することに注意する。 *: <br> ** minimal (デフォルト) **: 最小限のvariantのセットをビルドする。 **: Windowsの場合、デバッグモードとリリースモードの静的マルチスレッドライブラリであり、共有ランタイムを使用する。 **: Linuxの場合、リリースモードの静的および共有マルチスレッドライブラリである。 **: <br> ** complete **: 可能な全てのバリエーションをビルドする。 <br> * <code>--toolset</code>オプション *: ビルドに使用するツールセットを指定する。 <br> 必要ならば、~/.profileファイル等に環境変数を追記する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export LD_LIBRARY_PATH="/<Boostのインストールディレクトリ>/lib:$LD_LIBRARY_PATH" export BOOST_ROOT="<Boostのインストールディレクトリ>" export BOOST_LIBRARYDIR="/<Boostのインストールディレクトリ>/lib" export CPPFLAGS="-L$/<Boostのインストールディレクトリ>/include $CPPFLAGS" </syntaxhighlight> <br> ==== Windows ==== ===== ダウンロード ===== Boostをダウンロードする方法として、以下の2つがある。<br> <br> * ソースからビルドする方法 (推奨) *: [https://www.boost.org/users/download/ Boostの公式Webサイト]からソースアーカイブをダウンロードする。 *: 過去バージョンのソースアーカイブは、[https://www.boost.org/users/history/ Boostの旧バージョンアーカイブ]からダウンロードできる。 *: <br> * プリビルド済みバイナリを使用する方法 *: [https://sourceforge.net/projects/boost/files/boost-binaries/ SourceForge (boost-binaries)]から、各Visual Studioバージョン向けの <u>.exe</u> インストーラをダウンロードできる。 *: ただし、MSVC 14.4x (Visual Studio 2022 v17.10以降) 向けのバイナリは配布が限定的な場合があるため、該当バージョンを使用する場合はソースからビルドすることを推奨する。 <br> ===== ソースからビルドする手順 ===== ダウンロードしたファイルを解凍する。<br> <br> 解凍したディレクトリに移動して、コマンドプロンプトまたはPowerShellを管理者権限で実行する。<br> <code>b2.exe</code> ファイルを生成するため、バッチファイルを実行する。<br> bootstrap.bat <br> <code>b2.exe</code> を使用してBoostライブラリをビルドする。(32ビット、64ビット、ARM64 の各構成をビルドしてもよい)<br> <br> ===== b2.exe ビルドオプション ===== Boostライブラリの生成に使用できる主なオプションを、以下に示す。<br> <br> * <code>toolset</code> *: ビルドに使用するコンパイラ (ツールセット) を指定する。 *: 詳細はVisual Studio toolset対応表を参照すること。 * <code>address-model</code> *: 32ビット向けライブラリを生成する場合 : <code>32</code> *: 64ビット向けライブラリを生成する場合 : <code>64</code> * <code>architecture</code> *: <code>x86</code> または <code>arm</code> を指定する。 *: ARM64向けビルドを行う場合は <code>arm</code> を指定する。 * <code>link</code> *: <code>static</code> (静的リンクライブラリ) / <code>shared</code> (DLL) / <code>static,shared</code> (両方) のいずれかを指定する。 * <code>runtime-link</code> *: <code>static</code> を指定すると /MT または /MTd (静的ランタイム) でビルドされる。 *: <code>shared</code> を指定すると /MD または /MDd (動的ランタイム) でビルドされる。 * <code>variant</code> *: <code>debug</code> / <code>release</code> / <code>debug,release</code> のいずれかを指定する。 * <code>threading</code> *: <code>single</code> または <code>multi</code> を指定する。 * <code>--build-dir</code> *: ビルド時の中間ファイルの出力先ディレクトリを指定する。 * <code>--stagedir</code> *: ステージング先ディレクトリを指定する。 * <code>--prefix</code> *: <code>b2 install</code> 使用時のインストール先ディレクトリを指定する。 * <code>--with-libraries</code> / <code>--without-libraries</code> *: ビルドするライブラリを個別に選択または除外する。 * <code>--show-libraries</code> *: ビルド対象となる利用可能なライブラリの一覧を表示する。 * <code>--layout</code> *: <code>versioned</code> (Windowsデフォルト) / <code>tagged</code> / <code>system</code> のいずれかを指定する。 *: 指定するレイアウトによって、ライブラリ名の命名規則とインクルードディレクトリのパスが変わる。 * <code>-j<コア数></code> *: 並列ビルドに使用するCPUコア数を指定する。 <br> ===== Visual Studio toolset 対応表 ===== <code>toolset</code> オプションに指定するツールセット名と、対応するVisual Studioのバージョンを以下に示す。<br> <br> <center> {| class="wikitable" |+ Visual Studio toolset 対応表 ! Visual Studio !! MSVC Build Tools !! b2 toolset |- | VS 2005 (8.0) || 8.0 || <code>msvc-8.0</code> |- | VS 2008 (9.0) || 9.0 || <code>msvc-9.0</code> |- | VS 2010 (10.0) || 10.0 || <code>msvc-10.0</code> |- | VS 2012 (11.0) || 11.0 || <code>msvc-11.0</code> |- | VS 2013 (12.0) || 12.0 || <code>msvc-12.0</code> |- | VS 2015 (14.0) || 14.0 || <code>msvc-14.0</code> |- | VS 2017 (15.x) || 14.1x || <code>msvc-14.1</code> |- | VS 2019 (16.x) || 14.2x || <code>msvc-14.2</code> |- | VS 2022 (17.0 - 17.9) || 14.30 - 14.39 || <code>msvc-14.3</code> |- | VS 2022 (17.10 - 17.14) || 14.40 - 14.44 || <code>msvc-14.4</code> |- | VS 2026 (18.0) || 14.50 || <code>msvc-14.5</code> |} </center> <br> ===== 互換性に関する注意事項 ===== * MSVC 14.4x (Visual Studio 2022 v17.10以降) は、Boost 1.85以前のBoost.Buildで認識されない問題がある。 *: この問題が発生した場合は、Boost 1.86.0以降を使用すること。 * Visual Studio 2026 (msvc-14.5) を使用する場合は、Boost 1.91.0以降を推奨する。 *: Boost 1.91.0は2026年4月22日にリリースされた最新バージョンである。 <br> ===== ビルドコマンド例 ===== 32ビット、64ビット、ARM64向けのビルドコマンド例を以下に示す。<br> <br> <syntaxhighlight lang="powershell"> # 32ビット向けライブラリを生成する場合 b2.exe toolset=msvc-14.3 address-model=32 architecture=x86 ^ link=static,shared runtime-link=static,shared ^ variant=debug,release threading=multi ^ --build-dir=build\x86 ^ --stagedir=stage\x86 ^ -j4 # 64ビット向けライブラリを生成する場合 b2.exe toolset=msvc-14.3 address-model=64 architecture=x86 ^ link=static,shared runtime-link=static,shared ^ variant=debug,release threading=multi ^ --build-dir=build\x64 ^ --stagedir=stage\x64 ^ -j4 # ARM64向けライブラリを生成する場合 b2.exe toolset=msvc-14.3 address-model=64 architecture=arm ^ link=static,shared runtime-link=static,shared ^ variant=debug,release threading=multi ^ --build-dir=build\arm64 ^ --stagedir=stage\arm64 ^ -j4 # Visual Studio 2026 (msvc-14.5) を使用する場合の例 (Boost 1.91.0以降) b2.exe toolset=msvc-14.5 address-model=64 architecture=x86 ^ link=static,shared runtime-link=static,shared ^ variant=debug,release threading=multi ^ --build-dir=build\x64 ^ --stagedir=stage\x64 ^ -j4 </syntaxhighlight> <br> インストール先を指定してビルドする場合は、<code>--prefix</code> オプションと <code>install</code> ターゲットを使用する。<br> <syntaxhighlight lang="powershell"> b2.exe toolset=msvc-14.3 address-model=64 ^ link=static runtime-link=shared ^ variant=release threading=multi ^ --build-dir=build\x64 ^ --prefix=<Boostのインストールディレクトリ> ^ -j4 install </syntaxhighlight> <br> ===== ライブラリ名の命名規約 ===== <code>--layout=versioned</code> (Windowsのデフォルト) を使用する場合、ライブラリ名には以下のような識別子が付加される。<br> <br> 例: <code>libboost_filesystem-vc143-mt-s-x64-1_91.lib</code><br> <br> * <code>vc143</code> *: コンパイラ識別子。Visual Studio 2022 (msvc-14.3) の場合は <code>vc143</code>、Visual Studio 2026 (msvc-14.5) の場合は <code>vc145</code> となる。 * <code>mt</code> *: マルチスレッドでビルドされていることを示す。 * <code>s</code> *: 静的ランタイムリンク (/MT または /MTd) でビルドされていることを示す。 * <code>x64</code> *: 64ビットアーキテクチャ向けであることを示す。 * <code>1_91</code> *: Boostのバージョン番号 (例: 1.91.0) を示す。 <br> ===== Visual Studio プロジェクトの設定 ===== Visual Studioを起動して、任意のC++のプロジェクトを作成する。<br> <u>これは、各プロジェクトごとに設定する必要があることに注意する。</u><br> <br> [プロジェクト]メインメニュー - [プロパティ]を選択する。<br> [プロジェクトページ]画面が開くので、画面左にある[C/C++] - [全般] - 画面右にある[追加のインクルードディレクトリ]に、以下の設定を追記する。<br> <br> <u>インクルードディレクトリのパスは、ビルド時に指定した <code>--layout</code> オプションによって異なる。</u><br> <br> * <code>--layout=versioned</code> (Windowsデフォルト) の場合 *: <Boostのインストールディレクトリ>\include\boost-<バージョン> * <code>--layout=system</code> の場合 *: <Boostのインストールディレクトリ>\include <br> [プロジェクトページ]画面の画面左にある[リンカー] - [全般] - 画面右にある[追加のライブラリディレクトリ]に、以下の設定を追記する。<br> <u>ライブラリディレクトリのパスは、ビルド時に指定した <code>--stagedir</code> または <code>--prefix</code> の設定に依存する。</u><br> <br> # 32ビット向けライブラリの場合 <Boostのインストールディレクトリ>\stage\x86\lib # 64ビット向けライブラリの場合 <Boostのインストールディレクトリ>\stage\x64\lib # ARM64向けライブラリの場合 <Boostのインストールディレクトリ>\stage\arm64\lib <br><br> == Boostライブラリの確認 == Boostライブラリが使用できるかどうかを確認するため、以下に示すサンプルコードをビルドおよび実行する。<br> <syntaxhighlight lang="c++"> // boost.cpp #include <iostream> #include <vector> #include <string> #include <boost/version.hpp> #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/xml_parser.hpp> #include <boost/foreach.hpp> struct Boost_Test { std::string name1; std::string name2; }; int main() { std::cout << "boostバージョン : " << BOOST_VERSION << "\n"; std::cout << "boostライブラリバージョン : " << BOOST_LIB_VERSION << "\n"; std::vector<Boost_Test> books; books.reserve(2); Boost_Test test; test.name1 = "BoostTest1"; test.name2 = "100"; books.push_back(test); test.name1 = "BoostTest2"; test.name2 = "200"; books.push_back(test); using boost::property_tree::ptree; ptree pt; BOOST_FOREACH(const Boost_Test & data, books) { ptree& child = pt.add("list.data", ""); child.put("<xmlattr>.name1", data.name1); child.put("<xmlattr>.name2", data.name2); } using namespace boost::property_tree::xml_parser; const int indent = 2; write_xml("test.xml", pt, std::locale(), xml_writer_make_settings<std::string>(' ', indent)); return 0; } </syntaxhighlight> <br> ソースコードをコンパイルする。<br> g++ -I/<Boostのインクルードディレクトリ>/include boost.cpp -o boost <br> コンパイルしたファイルを実行する。<br> ./boost # 出力例 boostバージョン:107600 boostライブラリバージョン:1_76 <br> <syntaxhighlight lang="xml"> <!-- test.xmlファイル --> <?xml version="1.0" encoding="utf-8"?> <list> <data name1="BoostTest1" name2="100"/> <data name1="BoostTest2" name2="200"/> </list> </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Windows11]][[カテゴリ:Windows10]][[カテゴリ:C++]]
インストール - Boost
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse