MeshLab2016.12をビルドした時のメモ
こんにちは、しもむ~です。
ある事情によりCentOS7にMeshLabをソースコードからビルドする必要があったので
その作業中に詰まったところ等のメモを書いておきます。
なお、今回ビルド時に発生したエラー等は
今後修正&改善されると思われるのであくまで参考までに
Meshlab
Meshlabは3Dデータの編集、変換が可能なフリーのソフトウェアです。
モデリングソフトではないので1からモデルを作成することは出来ませんが、
点群処理の機能も備えており、
点群に法線を付与、ダウンサンプリング、メッシュ化等を行うことが出来ます。
今回ビルドしたMeshLabのバージョンは2016.12です。
環境
今回の作業環境です。
CentOS 7.1
gcc4.8.5
qmake 3.0
Qt 5.3
特にQtのバージョンは5以上が必須です。
それ以前のQtではmeshlab内部で呼び出している関数の一部に互換性なく、
ビルドに失敗します。
ダウンロード
MeshLabのページからソースコードをダウンロードできます。
また、MeshLabをビルドするのに別途必要なプログラムを
以下のURLからダウンロードします。
また、後ほど説明しますがソースコードに内包している
特定のライブラリが原因でビルドが失敗する可能性があるので、
それの対策用に以下のURLからファイルをダウンロードしておきます。
http://mpir.org/mpir-2.4.0.tar.bz2
ビルド
ビルドする前に、先程ダウンロードしてきたファイルのうち、
meshlabとvcglib-1.0.1を解凍し、vcglib-1.0.1をリネームします。
tar xvzf meshlab-2016.12.tar.gz
unzip vcglib-1.0.1.zip
mv vcglib-1.0.1 vcglib
以下のような配置になればOKです。
Downloads/ | ├──meshlab-2016.12 │ ├──docs │ ├──README.md │ ├──src │ ├──... │ └──... └──vcglib ├──apps ├──doc ├──eigenlib ├──... └──...
まずmeshlab-2016.12/src/external
内のプログラムをビルドします 。
cd meshlab-2016.12/src/external qmake -r external.pro make
次に一つ上の階層に戻り、
MeshLab本体をビルドします。
cd ../ qmake -r meshlab_full.pro make //中略 Cannot find file: .../Downloads/meshlab-2016.12/src/plugins_experimental/io_TXT/io_TXT.pro. make: *** [sub-plugins_experimental-io_TXT-make_first-ordered] エラー 2
ここでこのようなエラーメッセージがでました。
.proの名前が想定されたものと微妙に違うようです。
mv plugins_experimental/io_TXT/io_txt.pro plugins_experimental/io_TXT/io_TXT.pro
リネームし再度make
make //中略 g++ -Wl,-O1 -Wl,-z,relro -shared -o libfilter_csg.so filter_csg.o moc_filter_csg.o -L../../distrib -lcommon -lGLU ../../external/lib/linux-g++/libmpirxx.a ../../external/lib/linux-g++/libmpir.a -lQt5OpenGL -lQt5Widgets -lQt5Gui -lQt5Xml -lQt5XmlPatterns -lQt5Network -lQt5Script -lQt5Core -lGL -lpthread /usr/bin/ld: ../../external/lib/linux-g++/libmpir.a(lt4-clear.o): 認識できない再配置 (0x2a) がセクション `.text' にあります /usr/bin/ld: 最終リンクに失敗しました: 不正な値です collect2: エラー: ld はステータス 1 で終了しました make[1]: *** [../../distrib/plugins/libfilter_csg.so] エラー 1
次にこのようなエラーが発生しました。
どうやらexternalビルド時に生成したlibmpirをリンクできないようです。
もしこのエラーが発生した場合、先程ダウンロードしておいた
mpir-2.4.0.tar.gz2が必要になるので、解凍しmakeします。
cd ../../ tar xf mpir-2.4.0.tar.gz2 cd mpir-2.4.0 ./configure --enable-cxx --enable-static --with-pic make
makeが上手く言った場合、生成されたライブラリファイルを meshlab/externalの中の所定の場所にコピーします
cp .libs/libmpir*.a ../meshlab-2016.12/src/external/lib/linux-g++/
cd ../meshlab-2016.12/src/
再度makeし、無事成功しました。
実行ファイルは
./distrib/meshlab
にあります。
Hello MeshLab
あとはpathを通すなり移動させるなりして完了です。
※参考
github.com
github.com