2011/07/16

cygwinでlibusbのがコンパイルできんのはコンテキストメニューから起動させたため

前回、libusbをcygwinにsetup.exeでインストールして、アプリもコンパイルできた。

できていた。

しかし、今日やるとコンパイルエラーが出る。

[libusb-1.0.8/examples]$ gcc -o tst lsusb.c
lsusb.c:23:31: error: libusb-1.0/libusb.h: No such file or directory

/usr/includeを含めても、だめ。
/usr/include/libusb-1.0まで指定しても、だめ。
なんだこりゃ?

$ gcc --print-search-dirs
install:
c:\qtsdk\mingw\bin\../lib/gcc/mingw32/4.4.0/
・・・

あれ?

$ which gcc
/cygdrive/c/QtSDK/mingw/bin/gcc


あれれ??
cygwinで使うのに、/usr/binではないgccになってる。
なんでだろう。。。

念のため、いつも使っているcygtermではなく、"Cygwin Bash Shell"からやってみる。

$ which gcc
/usr/bin/gcc

ということは、cygtermか?
スタートメニューから"cyglaunch"を起動させると・・・ちゃんと/usr/bin/gccだ。
どうやら、コンテキストメニューから"Cygterm Here"で立ち上げるとこうなるみたい。

しかし、ファイラの「あふw」からは、同じようなことをして問題がない。
こんな設定で開いている。
C:\Program Files\teraterm\cyglaunch.exe -nocd -v CHERE_INVOKING=y -d \"%L\"

では、コンテキストメニューの設定を見てみよう。
HKEY_CURRENT_USER\Software\Classes\Folder\shell\cygterm\commandにある。
"C:\Program Files\teraterm\cyglaunch.exe" -nocd -nols -d \"%L\"

ふむ、CHERE_INVOKINGかnolsのどっちかのようだ。
ここに説明があった。
なるほど、ログインシェルを起動するとカレントディレクトリが移動してしまうから、ということか。

書き換えると、ちゃんとなりました。
そういえば、コンパイルが通った後でTeraTermの最新版をインストールし直したからな。
その辺で元に戻ったのかもしれん。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。