今まではwindowsでC++書いていたのですが、せっかくdocker&CentOS7を導入したので、これからはlinuxでもC++開発していきたいと思います!
で、C++開発するとなると必須となるのがboostですよね!!
必須でよね??入れてないなんて事ないですよね??「あなたが作ったその機能boost使えば一行で終わりますよ」みたいなことしてませんよね??
今日はboostのインストールを行っていきたいと思うのですが、
CentOSにboostをインストールするには2パターンあります。
1.yumでインストールする方法
2.最新版をソースからインストールする方法
両方の方法を試しましたが、最新版欲しいマンでなければyumで十分かなーと思います。
まずは、boostについて軽く触れた後、それぞれの手順を書いていきたいと思います。
1.boostとは?
詳細はwikipediaか公式ページを見てもらえばいいのですが、ざっくりいうと、以下のイメージです。
・オープンソースライブラリで超便利
・ほぼ標準になってるから大体どこの現場でも使えて超便利
・商用/非商用のどっちでも無料で使えて超便利
・個人的にはthreadライブラリ群が超便利
2.yumでインストール
まずは、yumでインストールする方法ですが、これはとても簡単です。以下のコマンドをたたくだけです。# yum install -y gcc-c++ boost boost-devel
この方法に欠点があるとすれば、最新版が入手できないというところ。CentOS7だと、1.53.0がインストールされました。
めちゃくちゃ古い、というわけでもないので最新版を使いたいという人以外はこれで事足りるかなーとは思います。現場とかで、バージョンに指定がある場合も基本はOS準拠になると思いますし。
これで、boostを利用する環境が整いました。
g++でコンパイルする時は-lboost_〇〇で指定して使います。
例)正規表現(regex)のライブラリを使う場合# g++ ./hogehoge.cpp -lboost_regex
3.最新版をソースからインストール
続いてソースからインストールする方法です。
最新版のインストールでもその他のパッケージ等はDVDのものだけで事足りるのでインターネットに繋がらないサーバでも割と容易にインストールできそうです。
0.古いバージョンのboostをアンインストール
yumでboostをインストール済みの方は先にアンインストールしてください。# yum remove boost boost-devel
1.公式ページから最新版のboostのtar.gzをダウンロード
→ダウンロードページ
2.↑のtarballをサーバに配置
3.解凍# tar xvfz ./boost_1_71_0.tar.gz
4.解凍したディレクトリに入る# cd ./boost_1_71_0
5.必要なパッケージのインストール# yum install -y gcc-g++
6.bootstrapを実行# ./bootstrap.sh --prefix=/usr/local/
※セキュリティ的に問題が無ければ–prefix=/usr/でも可。その場合、8.の手順が不要になります。
7.boostのビルド# ./b2 install
※結構時間かかります。
8.ライブラリのパスを通す
boostを使用したいユーザの~/.bash_profileを編集します。$ vi ~/.bash_profile
末尾に以下の一文を追加。export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
これで、最新版のboostインストールも完了です。
9.使用例
使用する際は、yumでインストールした場合と同じ感じでOKです。
例)正規表現(regex)のライブラリを使う場合$ g++ ./hogehoge.cpp -lboost_regex
※8.以降が$になっているのはセキュリティの都合で、rootに/usr/localのパスを通していないからです。rootでも/usr/localのパスを通している環境であれば同様に実行可能です。
おまけ
3.5.でbooststrapを実行した際に、–prefix=/usr/localと指定しているのですが、ここはインストール先のパスなので、/usr/を汚したくない等の意図があるのであれば任意のパスを指定することが可能です。
例えば、$HOME /local/boost_1_6_8みたいな形で、ユーザ毎に設定する、といった運用も可能なのです。
この場合、g++では次のように指定します。
例)正規表現(regex)のライブラリを使う場合 # g++ -I <指定したパス>/include ./hogehoge.cpp -L <指定したパス>/lib -lboost_regex
※LD_LIBRARY_PATHも指定したパスで通しておきます。
Makefile作るならまだしも、直打ちで毎回指定するのは少しめんどくさいですね。
また、これは蛇足ですが、boostの多くはヘッダファイルで構成されているので、展開した後のビルドをしなくてもパスの指定さえちゃんとしてやれば使えちゃったりします。
終わりに
今回はboostのインストールを行いました。
yumの方が圧倒的にイージーなので最新版欲しいマンでなければyumでいいと思います。
コメント