Cygwin + MinGW + GCC 相談室 Part 8 (987レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
35(2): デフォルトの名無しさん [sage] 2015/01/04(日) 16:52:23.98 ID:BvegMGE7(1/5) AAS
cygwin64上で作業をやっとります。
故あって32bitコードを書かねばならないのですが、
i686-w64-mingw32-gcc, i686-pc-cygwin-gcc共にfopenでPOSIXパスを渡すと、
errno=2, No such file or directory
ということで開けません。
windowsパスにすると開けます
ダメ fopen("/home/foo/bar.txt", "r");
OK fopen("c:/cygwin64/home/foo/bar.txt", "r");
mingwでは仕方ないかとは思いますが、cygwin32までPOSIXパスを否定されると辛い。
objdumpで見ても、fopenはcygwin1.dllのものを使用している模様。
PATHは/usr/i686-pc-cygwin/sys-root/usr/binを通してあります。
POSIXパスを認識させる良い方法がありましたら御指南願います。
38(1): デフォルトの名無しさん [sage] 2015/01/04(日) 18:42:58.13 ID:BvegMGE7(2/5) AAS
>>3737(1): デフォルトの名無しさん [sage] 2015/01/04(日) 17:25:27.63 ID:tnXQTL6U(1/2) AAS
>>35
Cygwinの32bitと64bitだとルートディレクトリが違うからじゃね?
32bitコード書くならCygwin32上で作業した方がいいのでは。
windows8でcygwin32使うとfork errorでまくりでコンパイルが進まないorz
39: デフォルトの名無しさん [sage] 2015/01/04(日) 18:44:55.84 ID:BvegMGE7(3/5) AAS
>>3636(1): デフォルトの名無しさん [] 2015/01/04(日) 16:57:48.42 ID:Qu74iV3W(1) AAS
>>35
これはコンパイラでなく、OSの仕様。
windows OSの仕様を変更させるか、コンパイラ改造するしかないんでは?
認識できるわけではないが、簡単なのは自作ラッパーを挟む。
いやいや、cygwin64環境、cygwin32環境でネイティブのgccを使うとPOSIXパス使えるんだわ。
ところが、cygwin64環境でcygwin32(i686-pc-cygwin)だと使えないわけで。
32bit版cygwin1.dllがルートパスをどこと認識してるか、ってところなのかな。
41: デフォルトの名無しさん [sage] 2015/01/04(日) 23:12:59.46 ID:BvegMGE7(4/5) AAS
>>4040(3): デフォルトの名無しさん [sage] 2015/01/04(日) 20:35:46.69 ID:tnXQTL6U(2/2) AAS
>>38
rebaseallやってもforkエラー出まくりなんだとしたらしゃーないな。
cygwin1.dllがあるディレクトリの1つ上がルートディレクトリになってるはず。
単にUnix形式になってさえいればいいのなら /cygdrive/c/cygwin64/home/foo/bar.txt で
開けばいいし、それだとダメならfstabをいじるか
windows7ではrebaseで治るんだけどなぁ。8.1はどうやっても連発で。
cygwin1.dllの一つ上がルートディレクトリはいい話を聞きましたわ。
マウントかリンクでなか胡麻化せるかも
42: デフォルトの名無しさん [sage] 2015/01/04(日) 23:41:05.65 ID:BvegMGE7(5/5) AAS
>>40
ファイル回りを/cygdrive形式で徹底することでなんとか胡麻化しできました
有難うございました。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s