はじめに
本記事はC++のライブラリであるboostの最新版をLinuxサーバーに圧縮ファイルからインストールする方法を解説します。最新版が必要でないのであれば、yumやaptによるインストールが最もスマートです。
環境
・2024/02/18
・GitHub Codespace
boostとは
boostとはタイトルにもある通り、C++のライブラリです。オープンライブラリであり、非商用/商用に無料で利用できます。
コミュニティとしてのboostは、ライブラリを提供しているだけに留まらず、C++のプログラム言語自体に多大な影響を与えています。boostライブラリはC++の標準機能を試験するための試験場としての役割があります。そのためboostライブラリはC++の標準機能では提供されない先鋭的な技術を提供しており、非常に有用なライブラリとして有名です。
ChatGPTにそのライブラリの内容を聞けば、以下の通りに回答してくれます。
他にも非常に有用な機能を提供しているため、詳しくはWikipediaに記される内容を参照してください。
ダウンロード方法
boostの公式ページに飛び、URLを取得します
Downloadsにあるいずれかの青い文字からURLを取得してください。
私の場合は以下のURLが取得しました。圧縮ファイルのtar.bz2です。
Linuxサーバーのターミナルで以下のコマンドを実行して下さい。URLの部分には、取得したURLを代入してください。
wget URL
解凍方法
bz2をダウンロードした場合
取得したURLの末尾にbz2と書かれている場合、以下のオプションを使用して解凍してください。xxxx部分は、ダウンロードした圧縮ファイルの名前を正確に入力して下さい。
tar -jxvf xxxx.tar.bz2
gzをダウンロードした場合
取得したURLの末尾にgzと書かれている場合、以下のオプションを使用して解凍してください。xxxx部分は、ダウンロードした圧縮ファイルの名前を正確に入力して下さい。
tar -zxvf xxxx.tar.gz
bootstrapの実行
解凍したboostのディレクトにcdコマンドを使用して入り、以下のコマンドを実行します。
./bootstrap.sh
boostのビルド
bootstrapの実行後にboostを使用するためにビルドが必要ですので、以下のコマンドを実行します。リカレントディレクトリは解凍されたboostのディレクトリのままです。
b2はBoost.Buildで管理されたプロジェクトをビルドする実行ファイルです。b2コマンドはprefixを指定することで、ビルドによる生成物の生成ディレクトリを指定できます。prefixのデフォルトは/usr/localが指定されているそうです。
sudo ./b2 install --prefix=/usr/local
以上のコマンドをそのまま実行した場合、boostライブラリとヘッダーはそれぞれ、/usr/local/libと/usr/local/includeにビルドされる。
ビルド時間はライブラリの大きさ相応に長くなる。全てのboostライブラリは要らず、特定のライブラリだけを使用したい場合は、bootstrap実行時に –with-libraries のオプションを使用することで解決できます。
example
boostライブラリを使用した簡単なコード例をコンパイルし、実行することでboostのインストールに問題がないことを確認します。今回はexample.cppというファイルに次のコードを保存しました。
#include <iostream>
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
int main() {
// UUIDを生成する
boost::uuids::uuid uuid = boost::uuids::random_generator()();
// UUIDを文字列に変換して表示する
std::cout << "Generated UUID: " << uuid << std::endl;
return 0;
}
上記のコードを保存したファイルが存在するディレクトリで以下のコンパイルを実行します。/usr/localとは異なるディレクトリにboostをビルドした際は、そのディレクトリを指定してください。
g++ -o example example.cpp -I /usr/local/include/boost -L /usr/local/lib
無事に実行できればexample実行ファイルが作成されています。実行ファイルを実行すると適当なUUIDが生成され、出力されます。
$ ./example
Generated UUID: c2253419-a003-4431-95cf-fe8db55938ac
参考