fc2ブログ

Visual SfMをMacBook Airにインストール

06 03, 2013
NVidiaのGPUを積んでないMacBook AirにVisual SfMをインストールする奇特なプレイの道のりを記したメモ.GPU使う気満々の方は参考にする際気をつけてください.Visual SfMのサイト (http://homes.cs.washington.edu/~ccwu/vsfm/) から Mac OSX x86_64 向けのソースコードをダウンロードする.以後は基本的に同ページのインストールガイド (http://homes.cs.washington.edu/~ccwu/vsfm/install.html#mac) に従って作業する.

環境:Mac OSX 10.7.4, Core i7, グラボ無し (intel HD3000)

1. gtk+のインストール


もうしてあった.makefileも見た感じ編集する必要無さそうだった.必要に応じてpkg-configのパスを編集.pkg-configのパスは,$ echo $PKG_CONFIG_PATH で確認可能.

2. X11+GLX+OpenGLが使えるか確認


よくわからなかったのでスルー

3. make


エラー.一番上のエラーはこんな感じ.

Package cairo was not found in the pkg-config search path.
Perhaps you should add the directory containing `cairo.pc'
to the PKG_CONFIG_PATH environment variable
Package 'cairo', required by 'pangocairo', not found


cairoのインストール自体はされていたが,.pcファイルが先の$PKG_CONFIG_PATHで指定されたフォルダに無かったので,他のファイルを参考にシンボリックリンクを張った.

$ cd $PKG_CONFIG_PATH
$ ln -s ../../Cellar/cairo/1.10.2/lib/pkgconfig/cairo.pc


これを,同様のエラーが出なくなるまで,同様の手順で繰り返す.ライブラリ自体が無い場合はhomebrewから追加でインストール.自分の環境では,先のcairoとfreetype,fontconfigというライブラリに関して対処を行ったらmakeが通った.いずれもpango何とかっていうやつの依存ライブラリだった.

余談


ライブラリ自体はhomebrewを使ってインストールしていたのに.pcが無かったのは,インストールしたfomulaが「keg only」だったから.keg onlyというのは要するに,「一応今インストールはしましたが,今あなたがインストールしたものはOSXにデフォルトで入っているので,何もしないとOSXデフォルトの方を使いますよ.新しく入れた方を使いたかったら明示してね」ということ.

4. SiftGPUのインストール


ソースコードをダウンロード後,makefileの「siftgpu_disable_devil = 0」を 1 にした.makeするとエラー.

4.1 エラーその1


ヘッダファイルが見つからないらしい./usr/X11/include/GLというフォルダに所望のファイルがあったので,さっきダウンロードしてきたSiftGPUのフォルダにある「include」というフォルダに,gl.h, glx.h, glxext.h の3つをコピー.

4.2 エラーその2


「/usr/lib64」「/opt/local/lib」が無い.とりあえずmakefileの58行目と90行目から上記2つに関する記述を削除.もうひとつ,libglewも無いと言われたので,これはhomebrewからインストール.

4.3 エラーその3


「Xなんとか」と名のつくシンボルがUndefinedだと言われた.名前から判断して適当にライブラリを追加する.makefileの89行目,LIBS_SIFTGPUに「-lX11 -lgl」を追加.その下の90行目に「-L/usr/X11/lib」を追加.

この状態で make siftgpu するとビルドできた.正直奇跡に近い.できあがったlibsiftgpu.soとlibsiftgpu.aを,Visual SfMのbinにコピー.

5. PBAのインストール


ソースコードをダウンロード後,makefile_no_gpuという切ない名前のファイルをmakefileにリネームしてmake.やはりエラー.

5.1 エラーその1


手元のCPUに最適化してくれるオプション「-march=native」の,nativeが上手く働かない.gccのバージョンが古くて,corei7向けの最適化ができないからだった.gccのバージョンを上げてみたが上手くいかず,面倒になったので-marchオプションを消す.

5.2 エラーその2


#include <malloc.h>

#include <stdlib.h>

これでmakeが通るので,libpba_no_gpu.aとlibpba_no_gpu.soを,それぞれlibpba.aとlibpba.soにリネームしつつVisual SfMのbinにコピー.

6. 起動


VisualSfM/bin にある「VisualSFM」を実行すると起動できる.SfMもできたけど,GPUが使えないとSIFTが全然早くない.疲れたのでここまで.

7. エクストラステージ


gccのバージョンを上げたので,SIFT-GPUをコンパイルし直す.なぜか当環境では-march=nativeがうまく動かないので,corei7を明示的に指定する.
makefileの24行目を以下のようにする

siftgpu_sse_options = -march=corei7 -mfpmath=sse


57行目,使うコンパイラとしてg++-4.9を明示.

CC = g++-4.9


61行目から「Simple hack」なるものがあるが,gccのバージョンを上げたので一連の処理をコメントアウト.これで少しは早くなる?
スポンサーサイト



0 CommentsPosted in OSX
プロフィール

津田沼

Author:津田沼

学生です。ドラムとDTMをやっていますが、多分向いていません。Macを使っています。好きなお笑い芸人はさまぁ~ずです。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
Ninjaアクセス解析