Closed usagi closed 10 years ago
-- checking for one of the modules 'libglog'
CMake Error at /usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:363 (message):
None of the required 'libglog' found
Call Stack (most recent call first):
CMakeLists.txt:126 (pkg_search_module)
-- sqlite3: /usr/local/bin/sqlite3
-- Configuring incomplete, errors occurred!
LH-RP1 /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++
<< apt-get install libgoogle-glog-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ libgoogle-glog-dev が見つかりません
wget http://ftp.jp.debian.org/debian/pool/main/g/google-glog/libgoogle-glog-dev_0.3.3-1_armhf.deb
wget http://ftp.jp.debian.org/debian/pool/main/g/google-glog/libgoogle-glog0_0.3.3-1_armhf.deb
sudo dpkg -i libgoogle-glog0_0.3.3-1_armhf.deb
sudo dpkg -i libgoogle-glog-dev_0.3.3-1_armhf.deb
apt-get install libgflags2
手順によっては最後にapt-get install -f
が必要になります。
時間無いから説明あとでかく。
cmake完了を確認。
<< ninja
[5/13] Building CXX object CMakeFiles/etupirka.dir/camera-capture.cxx.o
ビルドは時間がそれなりにかかる。10分かからないと思うけど、時間無いから結果はあとで。
<< ninja
[7/13] Building CXX object CMakeFiles/etupirka.dir/etupirka.cxx.o
FAILED: /usr/bin/g++ -Wall -pedantic-errors -std=c++11 -I../../libWRP-SQLite3/include -I../../libWRP-key/include -I/usr/include/opencv -MMD -MT CMakeFiles/etupirka.dir/etupirka.cxx.o -MF "CMakeFiles/etupirka.dir/etupirka.cxx.o.d" -o CMakeFiles/etupirka.dir/etupirka.cxx.o -c ../../etupirka.cxx
../../etupirka.cxx: In member function ‘void arisin::etupirka::etupirka_t::run_main()’:
../../etupirka.cxx:190:11: error: ‘sleep_for’ is not a member of ‘boost::this_thread’
../../etupirka.cxx:190:11: note: suggested alternative:
In file included from ../../etupirka.hxx:3:0,
from ../../etupirka.cxx:1:
/usr/include/c++/4.7/thread:263:7: note: ‘std::this_thread::sleep_for’
../../etupirka.cxx:190:78: error: ISO C++ forbids declaration of ‘type name’ with no type [-fpermissive]
../../etupirka.cxx:190:65: error: expected ‘>’
../../etupirka.cxx:190:65: error: expected ‘(’
../../etupirka.cxx:190:72: error: ‘boost::chrono’ has not been declared
../../etupirka.cxx:190:92: error: expected primary-expression before ‘>’ token
../../etupirka.cxx: In member function ‘void arisin::etupirka::etupirka_t::run_reciever()’:
../../etupirka.cxx:220:11: error: ‘sleep_for’ is not a member of ‘boost::this_thread’
../../etupirka.cxx:220:11: note: suggested alternative:
In file included from ../../etupirka.hxx:3:0,
from ../../etupirka.cxx:1:
/usr/include/c++/4.7/thread:263:7: note: ‘std::this_thread::sleep_for’
../../etupirka.cxx:220:78: error: ISO C++ forbids declaration of ‘type name’ with no type [-fpermissive]
../../etupirka.cxx:220:65: error: expected ‘>’
../../etupirka.cxx:220:65: error: expected ‘(’
../../etupirka.cxx:220:72: error: ‘boost::chrono’ has not been declared
../../etupirka.cxx:220:92: error: expected primary-expression before ‘>’ token
[7/13] Building CXX object CMakeFiles/etupirka.dir/space-converter.cxx.o
ninja: build stopped: subcommand failed.
エラー内容はあとでみる。時間ない。
libglogの件:
raspbian-wheezyというかdebianのwheezyにはglogがまだ入ってない。そこで、現行のdebian-sidのlibglogのパッケージをwgetで直接拾ってきてdpkgコマンドで.debパッケージファイルを直接インストールしています。
↑↑のエラー、現在実機ないので仮想マシンで同様の環境を用意して確認する。
Boostのバージョンが古くて機能が無いのではなかろうか。
ninja-buildもsidから手抜きで入れる。たぶん大丈夫じゃろ、たぶん(厳密にはダメ、理由はwheezyまでARMv6ターゲットだけどsidはARMv7ターゲットだからバイナリー互換性は本当は無い可能性もある。)
↑手抜きでsidから入れたのダメでした。
Run Build Command:/usr/bin/ninja cmTryCompileExec2648433437
Illegal instruction
Generator: execution of make failed. Make command was: /usr/bin/ninja
cmTryCompileExec2648433437
apt purge ninja-build
して改めてninjaを手作業でビルドします。
git clone git://github.com/martine/ninja.git
cd ninja
apt-get install re2c
./bootstrap.py
install ninja /usr/local/bin
帰宅・w・ 実機環境で再開します。
boost-1.49じゃboost::this_thread::sleep_forが無い!
どうしましょうね・・・。
提案
提案4(採用案):
#include <boost/version.hpp>
して#if BOOST_VERSION >= 105000
でboostの1.50以上とそれ未満を切り分けて、未満の場合にはboost::this_thread::sleep()
にboost::posix_time::microseconds()
を放り投げる。
ninja完了を確認
<< ninja
[2/2] Linking CXX executable etupirka
[build: virtual-keyboard.sqlite3] begin
* source-dir: /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample
* build-dir : /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++/CMakeFiles/etupirka.dir
* target-dir: /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++
generate sqlite3 importable data: /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++/CMakeFiles/etupirka.dir/virtual-keyboard-data.csv
create table: /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++/virtual-keyboard.sqlite3
import data : /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++/virtual-keyboard.sqlite3
build succeeded
<< ./etupirka --help
zsh: segmentation fault ./etupirka --help
( ゚д゚)・・・
LH-RP1 /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++
<< ./etupirka --help
zsh: segmentation fault ./etupirka --help
LH-RP1 /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++
<< ./etupirka
zsh: segmentation fault ./etupirka
LH-RP1 /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++
<< ./etupirka -d
zsh: segmentation fault ./etupirka -d
手抜きで入れたdebian-cidのglogライブラリーが問題かもしれない。手抜きしないで入れてリビルドしてみる。
念の為、手抜きインストールしたdebian-cidのglogの削除方法も書いておきます。
LH-RP1 /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++
<< dpkg -l | ack glog
ii libgoogle-glog-dev 0.3.3-1 armhf library that implements application-level logging.
ii libgoogle-glog0 0.3.3-1 armhf library that implements application-level logging.
LH-RP1 /home/usagi/repos/virtual-keyboard-prototype-1/integration-sample/build/g++
<< sudo dpkg --remove libgoogle-glog-dev libgoogle-glog0
(データベースを読み込んでいます ... 現在 105072 個のファイルとディレクトリがインストールされています。)
libgoogle-glog-dev を削除しています ...
libgoogle-glog0 を削除しています ...
念の為、google-glogの手作業インストール方法も書いておきます。
wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz
tar._ glog-0.3.3.tar.gz
cd glog-0.3.3
./configure
make
sudo make install
tar._
はtar xvf
のaliasです。Raspberry Pi/Raspbian-wheezyにおけるetupirkaビルド所要時間を計測してみました。
cmake所要時間: 23.47 [sec] ninja所要時間: 14:55.95 [min:sec]
glogを手作業でビルドすると、
<< ./etupirka
./etupirka: error while loading shared libraries: libglog.so.0: cannot open shared object file: No such file or directory
こうなったりするかもしれない。一時的にこの問題を解決するには、
LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ./etupirka
などと一時的に変数を定義して実行すれば良い。
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
を.zshrc等に追記すればそのユーザーでは恒常的に解消される。
または、glogの./configureの際に./configure --prefix=/usr
としておけば/usr/localではなく/usrにインストールされる。wheezyではglogはシステム標準では提供されないのでそれでも問題になることは無いと思います。
(top|front).1.mp4でビデオファイル入力モードでデバッグビルドのetupirkaをraspbian(RPi:700MHz)で動作させてみたところ、
I0123 03:37:41.073082 29273 etupirka.cxx:14] time_delta [ns]14145530000
という結果。リリーズビルドしたらもうちょっとはマシになるかもしれないけど。
※14,145,530,000[ns] = 14,145[ms] = 14 [sec] = 0.0714 [FPS]
厳しいなー。
まあ、とりあえずはRPiで動作可能にはなったのでCloseします。
これはcmakeの最低バージョン設定の修正だけで問題ない。後でコミットする。