2015/12/29

[esp8266]Windowsでビルドするのはあきらめた

前の記事で、cygwin(+Arduino環境用GCC)でビルドしたuser1.binは実行できず、Linuxでビルドしたuser1.binは動いた、という結果に終わった。

それだけでは、考察が甘いだろう。
何がダメだったのかの理由まで調べておきたい。
ただ、本職じゃないので、ありがちなところだけチェックしておこう。


まずは、GCCのバージョンから見ていく。

  • Linux
    gcc version 4.8.2 (crosstool-NG 1.20.0)
  • cygwin+Arduino (xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2)
    gcc version 4.8.2 (GCC)
  • esp8266-gcc5.2.0-r5.exe
    gcc version 5.2.0 (GCC)

うーん、「まずは」と書いているが、実はここに期待していたのだ。
何かしらバージョンが違うことによって、どこかバイナリに食い違いが出たんじゃなかろうか、と。

当てが外れた。
ひとまず、5.2.0を評価するのはやめよう。


cygwinでビルドしたときのbinと、Linuxでビルドしたときのbinは、バイナリのくせにあまり違いがない。
なんとなくだが、数字の違いを見ていると、アラインメントに関係するような気がした。
04とか、10とか、そういう数字に違いが多いからだ。
違うかなぁ。

地道に生成しているファイルを比較したところ、オブジェクトファイルの段階で差があった。
readelfすると、Linuxではアラインメントが1なのに、cygwinでは4であつかっているところがある。
全部ではないのだが、ところどころ見られる。

やはりコンパイラをArduinoから間借りするというのがよくなかったか。


じゃあ、ちゃんとインストールした5.2.0だったらうまくいくかと思ったが、コンパイル中にあれこれ関数定義がないと言われる(ets_memcpyとか)。
インクルードが足りないのかと思ったが、インストールした5.2.0の中にもSDKがまるまる入っているなど、なんかいろいろ考えるところが発生しそうだ(そっちの環境も、それはそれでmake関係のエラーが出たり)。

 

うん、もう、めんどくさいからWindowsでビルドするのはあきらめよう。
ここでがんばる時間がもったいない。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。