雑記帳

ちょっとした文章とかメモ書きとか。

boost 1.45.0 をbjamビルド

boost1.47.0では公式で案内しているビルド方法が異なっています。
手前味噌で恐縮ですが、boostjpのwikiに寄稿した記事があるのでそちらを参考にしてください。

boostjp–how to build boost library version 1.47.0
https://sites.google.com/site/boostjp/howtobuild

boost1.45.0が来ました。
※boost1.46でも以下の方法は変わりありません。
早速インストールしようとしたら、なんとWindows向けにはまだバイナリが無い!
現時点(11’1/17)ではDebian系Linuxでもapt-getコマンドで取れるパッケージにも存在しません。

お気づきの方は分かるでしょうが、今回も備忘録です(マテ

Macの雪豹ではMacportsでのインストールはもう済ませてあって。こっちはすんなり1.45.0が入りました。
Macportsではselfupdateをかけてやればsudo port install boostでboost1.45.0は入るはずです。
あとはmacportsにおまかせ(キリッ

ってな訳でbjam.exeを使ってのインストール。

まず、boostの本家でboost1.45.0を落としてきます。
ここまでは誰にでもできます。DL速度は回線に依存しますが。

まず、嵌ったのが今回のbjamは落としてきたbjamではなく、ここによると付属のbootstrap.bat(Windows環境の場合)又は、bootstrap.sh(Linux環境の場合)から生成させたbjamでないとNGとのこと。

これを実行して出来たbjamでインストールしていきます。

bjamの内部制御の文法とかビルドするうえでは全く知る必要はありません。
boostのライブラリのフォルダ構造は

boost_1_45_0--|--bin.v2
      	  ↑
(ビルドしたlib/dllはデフォルトではここに生成される)
 	      |--boost
	      |--libs
              |
              ・・・
 	      |--tools
	その他ファイル
		↑
	(bootstrap.batはここにある。):Windows向け
	(bootstrap.shもここにある。):Linux向け

となっています。boostのルートフォルダというのはこの色々とあるフォルダではなく一番上のboost_1_45_0フォルダです。

すんごい見にくくてスイマセン。。

今回のbjamでは

bjam –toolset=target link=static,shared release debug stage

のコマンドさえ分かっていればよいです。このコマンドでデバッグとリリース向けに、しかも動的・静的リンクの両方で使えるboostのbjamビルドが出来ます。
コマンドプロンプトのカレントディレクトリをboostのルートフォルダにしてから実行してください。大体30分から1時間くらいビルドには掛かるので気長に待ちましょう。

targetで使いたい環境を指定してください。
ここを参考にすると主なWindows向けコンパイラでは:

  • msvc : Visual C++の付属コンパイラ
  • intel : Intel C++ コンパイラ
  • gcc : GNU Compiler Collection のC・C++・Objective-Cコンパイラ

がターゲットに指定出来るようです。

本当は–prefixで.lib/.dllファイルを吐き出すディレクトリを指定したかったのですがうまくいかず。
なのでbin.v2フォルダ全体から「lib -rsp -a」とマイナス検索も駆使して手動でlib/dllを指定のフォルダにコピーしました。MSVC向けの正しい探し方は下に。
・・なんで上手くいかんのやろorz

追記:–build-dir=でビルドディレクトリの指定は出来ますが、どの道そのフォルダ内にboost/bin.v2フォルダが生成されてしまって上手くlib/dllが抽出できないみたいです。ガックシ・・
msvc向けのlib/dllをbiv.v2フォルダから探すには「lib OR .dll -rsp -manifest -obj」で探せます。
OR検索&マイナス検索でひっかければよろし。

追記*2:
intel C++向けでは~lib.rsp と ~dll.rspが生成されるのでこいつをさがします。
Intel C/C++ Compilerには最初からBoost1.34のdll(date_time/filesystem/regex/system/thread)がWindowsの場合は入っています。
また、Linux版ではBoost1.34のso(date_time/filesystem/regex/system/thread)が入っています。
なのでどうしても1.45.0を使いたい限り、サポート対象外になりますが、bjamを回せばよいでしょう。
MinGW gcc向けでは ~mgw32-mt-1_45.aと~mgw32-mt-1_45.dllが生成されるのでこいつをさがします。

バイナリからインストールしても使えない機能もあるのでどのみち通らないといけない道ではあると思います。

今回はboost.pythonのビルドは見送りました。私はC系(C・C++・C#)とFortran90HaskellRubyは使いますが、Pythonは使ってないので必要ないからです。

ではこの辺で。

追記:boost::pythonはpython2.xが入っていると、どうやらbjamビルドが走るようです。python2.6あたりが入っているPCでbjamを走らせるとboost::pythonのバイナリも生成されました。

Linux環境では?

また、Linux環境では
$./bjam install –prefix=/home/(ログインユーザー名)/libboost
とすると目的のフォルダlibフォルダが生成され、includeファイルもすべてコピーしてくれました。
ここで注意ですが、Linux環境では/homeフォルダ以外はrootとしてログインをしていないとアクセス権限が読み取りしか無いことがあるので、/homeディレクトリ以外にインストールする時でUbuntuの場合はsudo rootとしてインストールすることをお忘れなく。
※ただし、Ubuntuで/homeディレクトリ以外にインストールするのはオススメしません。

また、UbuntuではSynapticパッケージマネージャーからDebianパッケージのlibboost1.42-devが提供されているのでこちらを使うほうが安全です。
boostライブラリを全部インストールするにはlibboost-allパッケージを選択します。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。