風で飛んでいくチラ裏

気ままに雑記メモ書き殴り。古い記事は別blogからの引っ越しなのでレイアウトがアレです。

WinAVRのコマンドがエクスプローラから起動すると上手く動かない

↓続報はこちら

http://bwind.blog19.fc2.com/blog-entry-70.html

こちらの記事は微妙な予想ばっかりだったので、続報だけ見るのが吉かも。

WinAVRとAVRStudioをインストールしまして、SVNにある他人の作ったプロジェクトをチェックアウトしてきて、 ビルド。

winavrさんはコンパイルgnu make を使うので、他のmakeが間違って使われないように PATHに気をつける。 で、ビルドするためにこさえたbatファイルをエクスプローラからダブルクリックして実行すると、

--- /usr/bin/sh: /c/WinAVR/bin/avr-objcopy: Invalid argument ---

こんなのが出るわけですよ。 今度は、コマンドプロンプトを起動して、このbatファイルを実行すると、今度はエラーが出ずにビルドやら他の 作業をちゃんとやってくれる。

…………??

わけわかめエクスプローラからダブルクリックして起動したコマンドプロンプトは、PC起動時の環境変数を使うので、 PATHがちゃんと通ってなかったか?と思って、再起動しても結果は同じ。

batファイルにpath出力させるようにしたら、両者とも全く同じ、作業フォルダも同じ(batファイルのあるディレクトリ)

※両者

 1. エクスプローラからダブルクリックして起動したbatファイル
 2. コマンドプロンプトを起動し、batファイルのあるフォルダまで行って、起動したbatファイル

…………??

わけわかめcygwinが入ってるので、なんかそっちのシェルがでしゃばって勝手にパス解決できないプンスコしてるみたいなんだけど、 お前呼んでないから。つかエクスプローラから起動した時だけ出てくるってどういうことよ。

って、X-Finderお前かー!! ファイラにX-Finderを使ってるんだけど、こいつ経由で起動するとどうやらダメらしい。 "Windowsエクスプローラ"からダブルクリックすると上手くいきました。 さて、X-Finderの設定でも見てみるか…。

(追記) PC再起動したら今度はX-Finderから起動したbatファイルが上手く動いて、Windowsエクスプローラから起動した batファイルが/usr/bin/sh: ~~エラー吐きやがったww これはひどい

AVRStudioから直接ビルドした場合も、上手くいく場合と上手くいかない場合が再起動毎に発生する。 起動回数が偶数(奇数)の時はなんかが頑張っちゃうのか?ざけんなw

SVSが悪さをしているのか、cygwinが悪さをしているのか、はたまたOSなのかPCなのか…。 これはちょっとしんどそうなので、完全にビルド出来なくなるまでは放置かな…。

(さらに追記) setで環境変数全部出して、ビルドできるときとできないときの差分を見てみたら __COMPAT_LAYER=ElevateCreateProcess というのがある時に失敗する。

batファイルの先頭に set __COMPAT_LAYER= として、この設定を削除してから実行すると、失敗している方の起動方法でもエラーがでなくなった。 うーむ。結局ビスたんのせいだったということか…?

(function(document){ var pres = document.getElementsByTagName("pre") for(var i=pres.length; i--; ){  var el = makeOl(pres[i]) pres[i].appendChild(el) } function makeOl(pre){ var ol = document.createElement("ol") , li = document.createElement("li") , df = document.createDocumentFragment() , br = pre.innerHTML.match(/\n/g) ol.className = "preLine" ol.setAttribute("role", "presentation") for(var i=br.length; i--; ){ var li2 = li.cloneNode(true) df.appendChild(li2) } ol.appendChild(df) return ol } })(document)