概要
pangolin https://github.com/stevenlovegrove/Pangolin
をmac でpythonbindingをつかってビルドしようと思いましたが、解決できないエラーに悩まされました。
メモ1
https://github.com/stevenlovegrove/Pangolin
ここから普通にpython3.6系を使い、ビルドしようとした時のこと。
ffmpeg に関するエラーが出たので、まずはcmake のフラッグで
-DBUILD_PANGOLIN_FFMPEG=OFF
を用いた。
もしくは、CMakeModules
フォルダの中のFindFFMPEG
をいったん退避させてみた。
その後、cmake --> make -j
にて
[ 0%] Building CXX object src/CMakeFiles/pangolin.dir/display/display.cpp.o
[ 1%] Building CXX object src/CMakeFiles/pangolin.dir/video/video.cpp.o
[ 2%] Building CXX object src/CMakeFiles/pangolin.dir/fonts.cpp.o
[ 2%] Linking CXX shared library libpangolin.dylib
Undefined symbols for architecture x86_64:
"_libintl_bind_textdomain_codeset", referenced from:
_PyIntl_bind_textdomain_codeset in libpython3.6m.a(_localemodule.o)
"_libintl_bindtextdomain", referenced from:
_PyIntl_bindtextdomain in libpython3.6m.a(_localemodule.o)
"_libintl_dcgettext", referenced from:
_PyIntl_dcgettext in libpython3.6m.a(_localemodule.o)
"_libintl_dgettext", referenced from:
_PyIntl_dgettext in libpython3.6m.a(_localemodule.o)
"_libintl_gettext", referenced from:
_PyIntl_gettext in libpython3.6m.a(_localemodule.o)
"_libintl_setlocale", referenced from:
_PyLocale_setlocale in libpython3.6m.a(_localemodule.o)
"_libintl_textdomain", referenced from:
_PyIntl_textdomain in libpython3.6m.a(_localemodule.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libpangolin.dylib] Error 1
make[1]: *** [src/CMakeFiles/pangolin.dir/all] Error 2
make: *** [all] Error 2
このエラーが解決できない。
メモ2
https://github.com/uoip/pangolin
このレポジトリを使い、同じようにビルドを試した。
ffmpegに関してはメモ1にあるように対処した。
その際、
https://github.com/uoip/pangolin/issues/35
ここと同じ問題が発生したため、
ここで提案されているようにinclude のパスを全て絶対パスで上書きした。
(eigen, gl
で同じように対応)
その後、ビルドは通り、pangolin.cpython-36m-darwin.so
が生成されたものの、インポートの際に
https://github.com/uoip/pangolin/issues/26
ここにあるようにセグフォ(11)した。
メモ3
ubuntu18系でも試したところ、Pangolinはビルドがうまくいき、importも問題なくできた。
しかしながら、同様にビルドしたかったg2opy
がこちらではビルドできず、(macではこちらはビルドできる、、)
いったん断念。
以上pangolin
のビルドに関する備忘録。