2018年07月05日

Raspbian Stretchでxnp2をビルドしたらエラー出た件

Raspberry Pi 3B+欲しいなあ。
しかし最近仕事が異様に忙しくなったので、余計なことしてられる時間がない。。。
このブログも最後の更新が3月とか色々ひどい。
ちょっと前まで、おいらニートに念願のジョブチェンジ!とか言ってたのが夢のようです。
(´・ω・`)

そんな忙しい中、合間見つけてちまちまやっているおっさんの物語。

夏なのでRaspberry Pi 2が発熱が低いので、夏場の簡易デスクトップとして大活躍です。
そしてふと気がつくとRaspbianがStretchになってたので、以前のJessieを消してアップグレードしました。
アップグレード後、xnp2をビルドしようとしたら、



こんなの出てコンパイルが止まる。
0.86で止まってるし、そろそろコンパイル通らなくなるだろうな、と思ったらやっぱりでした。

ソース追っかけた結果、x11ディレクトリ内にあるcompiler.h内で定義されてるマクロであるmin,maxがstd_algobase.h内にある同様のマクロと衝突しているのが原因みたい。
対処法として、とりあえずエラー出るソースの先頭付近にある、

#include "compiler.h"

行の直下に、

#include "compiler.h"
#undef min
#undef max

compiler.h内のmin,maxをundefして対処したら無事ビルド成功。
楽するために、とりあえずパッチを作ってみた。

http://akifuyu.sakura.ne.jp/blog/binary/xnp2-macro_fix.patch

ソースを解凍したら、xnp2-0.86ディレクトリ内に入って同パッチを保存。

$ patch -p1 < xnp2-macro_fix.patch

で、パッチを当てたらx11ディレクトリ内に入って./configureしてmake。
ビルドする際の./configureで必ずCFLAGSとCXXFLAGSに最低限-O2を指定すること。
これやらないとパフォーマンスがかなり落ちます。

後、とりあえずエラー出なくなる範囲でしか修正していません。
パッチ当ててももしかしたらエラー出るかもしれないので、その時はエラー出ているソースを上記の方法で修正してみてください。
posted by えとかみ at 21:38| Comment(0) | TrackBack(0) | パソコン