xgrというのは波形データを視覚化するツール。ソースコードからビルドするようです。
xgr
ラズベリパイでxgrのビルドをしようとするとエラーになってしまう。
下記のような内容。
pi@raspberrypi:~/Downloads/x11/xgr $ sudo make make -f xgr.mk make[1]: Entering directory '/home/pi/Downloads/x11/xgr' mkdir -p ./xgr_objs gcc -g -c -I/usr/X11R6/include -DUNIX xgr_file.cpp -o ./xgr_objs/xgr_file.o xgr_file.cpp: In function ‘void load_ascii(xgr_params_t&, vector_data_t&, input_style_t, graph_style_t, char*)’: xgr_file.cpp:161:39: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] fp = open_file_or_die(file_name, "r"); ^ xgr_file.cpp: In function ‘void load_binary(xgr_params_t&, vector_data_t&, input_style_t, graph_style_t, char*)’: xgr_file.cpp:302:31: error: no matching function for call to ‘stat::stat(char*&, stat*)’ if (stat(file_name, &stat_buf) != 0) { ^ In file included from /usr/include/fcntl.h:79:0, from /usr/include/X11/Xos.h:88, from xgr.h:48, from xgr_file.cpp:47: /usr/include/arm-linux-gnueabihf/bits/stat.h:38:8: note: candidate: stat::stat() struct stat ^~~~ /usr/include/arm-linux-gnueabihf/bits/stat.h:38:8: note: candidate expects 0 arguments, 2 provided /usr/include/arm-linux-gnueabihf/bits/stat.h:38:8: note: candidate: constexpr stat::stat(const stat&) /usr/include/arm-linux-gnueabihf/bits/stat.h:38:8: note: candidate expects 1 argument, 2 provided /usr/include/arm-linux-gnueabihf/bits/stat.h:38:8: note: candidate: constexpr stat::stat(stat&&) /usr/include/arm-linux-gnueabihf/bits/stat.h:38:8: note: candidate expects 1 argument, 2 provided xgr_file.cpp:322:38: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] fp = open_file_or_die(file_name, "r"); ^ xgr.mk:25: recipe for target 'xgr_objs/xgr_file.o' failed make[1]: *** [xgr_objs/xgr_file.o] Error 1 make[1]: Leaving directory '/home/pi/Downloads/x11/xgr' Makefile:2: recipe for target 'build' failed make: *** [build] Error 2
解決方法
結論としては、xgr_file.cppに「#include <sys/stat.h>」を追加すればOKのようです。
Warningは沢山でますが、とりあえずバイナリが生成されました。
エラーの内容としては、参照しているstat.hのほうだとコンストラクタの引数が合わない感じ。意図していない同盟のファイルがロードされていたような感じだろうか。あんまり調べてないです。
make installも何かと失敗するのでインストールしてませんが、とりあえずグラフが表示されるのは確認できた。
これでsptkで遊べるかな。
参考にしたサイト。
error: no matching function for call to ‘stat::stat(const char*, stat*) · Issue #10 · SimHacker/micropolis · GitHub
→あんまり関係なかった。
c++ - Header or something to add to a code to detect if folder exist - Stack Overflow
→ヘッダがincludeされてないんじゃね?とのコメント。その通りだった。