Cygwin + MinGW + GCC 相談室 Part 8

1デフォルトの名無しさん
垢版 |
2014/09/23(火) 00:20:11.40ID:G97CLCj1
Windows上で動作するフリーの開発環境 CygwinとMinGWに関する相談スレッドです。

過去スレ:
Cygwin + MinGW + GCC 相談室 Part 7
http://peace.2ch.net/test/read.cgi/tech/1357019230/
Cygwin + MinGW + GCC 相談室 Part 6
http://toro.2ch.net/test/read.cgi/tech/1304609116/
Cygwin + MinGW + GCC 相談室 Part 5
http://hibari.2ch.net/test/read.cgi/tech/1269400706/
Cygwin + MinGW + GCC 相談室 Part 4
http://pc12.2ch.net/test/read.cgi/tech/1221233882/
cygwin + mingwn + gcc 相談室 Part3
http://pc11.2ch.net/test/read.cgi/tech/1177944767/
cygwin + mingwn + gcc 相談室 Part2
http://pc11.2ch.net/test/read.cgi/tech/1126103347/
cygwin + mingwn + gcc 相談室
http://pc8.2ch.net/test/read.cgi/tech/1058134693/

関連サイト:
Cygwin http://www.cygwin.com/
MinGW http://www.mingw.org/

関連スレッド:
GCCについて part10
http://toro.2ch.net/test/read.cgi/tech/1315026784/
664デフォルトの名無しさん
垢版 |
2020/04/20(月) 21:57:01.49ID:vn9gJe4h0
マジかよWSLに失望しました。窓から投げ捨ててMinGWに乗り換えます
2020/04/20(月) 23:38:08.46ID:pVOiahav
いやいや君なんでも即断すぎやろw
2020/04/21(火) 05:17:44.95ID:Lx1iEb8v
>>665
結論ありきの質問だからねw

使ってみればわかる。
WSLが一番軽いし一番正確に動く。
2020/04/22(水) 00:52:15.00ID:nnh+EV8P
mingw-w64-〇〇〇-yasm-1.3.0-4 (は32bit用はi686、64bit用はx86_64)
yasm-1.3.0-2

どう違うの?
入れるのはどっち?
2020/04/22(水) 09:41:29.70ID:UQ7whF8j
前者はMinGW-w64のDLLが必要。いわゆるネイティブアプリ
後者はMSYSのDLLと場合によってはターミナルエミュレータが必要
どちらを使うかは環境と用途次第
669デフォルトの名無しさん
垢版 |
2020/04/22(水) 09:46:40.84ID:O/jaLKmb
おま環
2020/04/23(木) 21:18:54.36ID:4ZqPhGA2
msys2を入れてpacman -Syuをやった後、home/PC名のフォルダに、.gnupgというフォルダがあるんだけど、これって消しちゃダメ?
671デフォルトの名無しさん
垢版 |
2020/04/26(日) 14:07:46.35ID:XGLrD3LC0
え!?WSLってそのままでは音流せないんですか!?
2020/04/26(日) 15:10:53.48ID:O/ywVmO1
gnupgってGPGだろ
GNU製のPGP暗号化と復号プログラム
2020/04/26(日) 16:13:34.86ID:D7tlSM02
>>671
PulseAudio使えばいいだけじゃね?
2020/04/27(月) 04:32:34.19ID:xcrAouIA0
ではWSLは、デフォルトでは音すら流せない杜撰な造りをしていると認めるんですか?
2020/04/27(月) 06:42:04.21ID:4F1K1x/3
単にサウンドデバイスを実装してないだけだよ
設計は良く出来てるので実装しようと思えば出来るだろうが
利用者が求めてない機能なので優先度が低い
WSLの利用者は開発者だからね。開発者が欲しい機能が最優先
2020/04/27(月) 06:46:16.14ID:4F1K1x/3
あ、もしWSLが開発者向けの機能を優先してるのを知った上で
WSLは駄目だって印象を与えようとした書き込みだったらごめん、邪魔したね
そうでないなら音ならWindowsで鳴らせばいいと気づければOKだよ
音を鳴らす程度のためにWSLは不要だからね
2020/04/27(月) 17:16:43.92ID:cdGyQVmm
>>653
wslはwslのコマンドラインからlinuxバイナリもwindowsバイナリも動く優れものなんだよ
2020/04/27(月) 18:06:23.13ID:AD9YXzU7
>>677
そうそう。だからbashのシェルスクリプトで
Windowsのコマンドを実行してOSの設定を変更するとかできちゃう
2020/04/27(月) 19:44:31.43
Windowsのコマンドプロンプト側からWSLのディレクトリに入っていけるの?
2020/04/27(月) 19:55:00.34ID:AD9YXzU7
>>679
それはコマンドプロンプト自体の問題で、こいつは古いアプリなのでUNCパスに対応していない
UNCパス(\\ではじまるネットワークフォルダのパス)を扱えるツールを使う必要がある
WSLのディレクトリに対応してるかというよりも
ネットワークフォルダに対応しているかという話に近い

PowerShellはUNCパスに対応しているからWSLのディレクトリにも入れる
コマンドプロンプトから実行するコマンドもUNCパスに対応していれば参照できる
またネットワークフォルダはドライブに割り当てることが出来るので
ドライブに割り当てればコマンドコマンドからWSLのディレクトリに入ることも出来る
2020/04/27(月) 19:56:20.68ID:AD9YXzU7
ちなみにcdの代わりにpushdを使えば
コマンドコマンドからUNCパスに移動できる
一時的にドライブを割り当てているだけだが
2020/04/27(月) 22:41:42.75
詳しい情報サンクス!
これなら皆がWSLへl移行するのもわかる気がする
2020/04/27(月) 23:26:27.00ID:hGgbh3Gh
windowsのSSHサーバ立ち上げてwslをシェルにできるのは便利
PowerShell極めてるひとなら不要かもしれんけどね
2020/04/28(火) 10:33:28.83ID:gG+m5xpc
MSYS2とWSLって共存出来るんですか?
685デフォルトの名無しさん
垢版 |
2020/04/28(火) 10:52:09.80ID:zAZN/f3s
マジレスするとmsys使ってて問題無ければwsl要らない
2020/04/28(火) 17:09:56.15ID:7TaGv6sC
>>684
共存できる。msys2はただのアプリでしかないから

>>685
msysの問題はUbuntuと同じようなメンテナンス力を期待できないところかな
WSLは本物のUbuntuのディストリのパッケージが使われてるので
Ubuntuとほぼ同等にメンテナンスされてると思っていい

だけどmsysは(Ubuntuと比べたら小さな)開発者が対応してるパッケージしか使えない
しかもLinuxと完全互換じゃないからmsysでソースコードからコンパイルしようとしても
動くとは限らない。WSLを使えばそういった煩わしさから開放される。

msysはWSLを入れてない人のためのWindows用アプリを作るためのものだよ
開発者がLinuxの代わりとして使うものじゃない
2020/04/28(火) 17:14:36.86ID:qC7CqvMj
ホームパスを一緒にすると色々弊害出そう
2020/04/28(火) 17:30:05.30ID:7TaGv6sC
>>687
シンボリックリンクでホームディレクトリ以下から
アクセスしやすくするのがおすすめ
色々と混ざらないし複数のディストリでも共有できる
2020/04/28(火) 18:17:52.10ID:eCWBo+Hl
色々と混ぜたいからホームディレクトリを一緒にするんだろ
そうじゃなければ最初から分けとけばいいだけの話だ
2020/04/28(火) 18:20:54.27ID:7TaGv6sC
>>689
「色々」と混ぜたいならその「色々」だめを混ぜればいいじゃん
全部混ぜる必要はない
2020/04/28(火) 18:21:10.90ID:7TaGv6sC
「色々」と混ぜたいならその「色々」だけを混ぜればいいじゃん
692デフォルトの名無しさん
垢版 |
2020/04/29(水) 09:35:11.34ID:TuLha3Ht
混ぜるな危険
2020/04/29(水) 09:46:08.06
Microsoft Store に WSL Ubuntu 20.04 LTS 出てるけど、まだ入れない方がいいんですか
2020/04/29(水) 10:27:50.31ID:Cpi+Il5+
早くても、8月以降に、20.04.1 とか修正版が出た後。
1年後でも良い

Ruby のirb では、MSYS2/MinGW で、日本語入力でバグるから、
WSL の方が、互換性が高い

日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv で、
色々なバージョンも入れられる

VSCode も、Remote WSL 拡張機能で、Linux 側へアクセスできる
2020/04/29(水) 10:38:59.10ID:Cpi+Il5+
>>679
コマンドプロンプト・PowerShell で、wsl と入力すれば、WSLが起動する

最も良いのは、Linux 側のフォルダのショートカットをデスクトップにでも作って、
そのフォルダの右クリックメニューから、VSCode を起動する

これで、WSLを起動して、Linux側のプロジェクトを開ける
2020/04/29(水) 11:51:03.18ID:Jemg3aCN
wsl, opensuse leapにmingw64入れてクロスビルドしてる。
configure作って--hostでmingw指定すれば楽勝すぎて屁が出そう
2020/04/29(水) 11:51:38.68
自分が使っているWSLが1なのか2なのか知る方法は?
2020/04/30(木) 13:35:41.83ID:HbyVq09Q
openSUSE Leap 15.1用のmingw配布消えとるやん
くそがー
2020/04/30(木) 17:32:57.91
そもそもWSL2はエンスー向けか
普通の人は1が入ってるのか
700デフォルトの名無しさん
垢版 |
2020/05/02(土) 23:21:47.63ID:nkPqW+JC
MinGWっていうかGitBash環境なんだけど
WSL1より2倍ぐらいシェルスクリプトが遅いんだよね
どこが原因かわからんけどこんなもん?
なにか大きな差がでるポイントでもあるんかね?
2020/05/03(日) 03:37:53.54ID:HUz+EFHq
WSL1 (bash 4.4.20) だと
$ time bash -c 'i=0; while [ $i -lt 1000000 ]; do : $((i+=1)); done'
real 0m6.317s
user 0m6.313s
sys 0m0.000s

MinGW64 (bash 4.4.23) だと
$ time bash -c 'i=0; while [ $i -lt 1000000 ]; do : $((i+=1)); done'
real 0m15.053s
user 0m15.000s
sys 0m0.030s

Cygwin (bash 4.4.12) だと
$ time bash -c 'i=0; while [ $i -lt 1000000 ]; do : $((i+=1)); done'
real 0m13.897s
user 0m13.858s
sys 0m0.046s

うーん、こんな単純なコードで2倍の差がでてるから
もうこれはどうしようもないのか?
2020/05/03(日) 04:04:18.44ID:HUz+EFHq
比較とか計算が遅いのかと思ってやってみたけど
この比率は変わらない

WSL1
$ time bash -c 'for i in $(seq 1000000); do :; done'
real 0m2.159s
user 0m1.828s
sys 0m0.359s

Cygwin
$ time bash -c 'for i in $(seq 1000000); do :; done'
real 0m4.222s
user 0m3.889s
sys 0m0.341s

MinGW64
$ time bash -c 'for i in $(seq 1000000); do :; done'
real 0m4.821s
user 0m4.342s
sys 0m0.436s


WSL1 → Cygwin(2倍ぐらい遅い)→MinGW(さらに10%遅い)
こんな傾向がある。ファイルシステムは関係ないはず
やってるのはCPUの処理だけなはずなんだけどなぁ
2020/05/03(日) 05:18:19.65ID:1PSoskYy
調べるとradeonのドライバを切れとか書いてあるけど…
2020/05/03(日) 05:22:33.02ID:HUz+EFHq
>>703
使ってないよw
2020/05/03(日) 05:24:47.68ID:HUz+EFHq
radeonの話は画面に出力が絡むなら
関係ありそうな気もするけど、それ以外でも発生するんだろうかね
あとHOMEは MinGWは /c/Users/myname
Cygwinは/home/mynameだ
2020/05/03(日) 05:26:40.40ID:HUz+EFHq
よく見ると大きな差があるのはuser空間だから
コンパイルオプションが違ってるとかなのかな?
2020/05/03(日) 05:38:01.14ID:1PSoskYy
seq使うんじゃなくて{1..1000000}の方がいいかもね
2020/05/03(日) 06:00:40.65ID:HUz+EFHq
>>707
つってもわずか一回だからなぁ。やってみてもいいけど

WSL1
$ time bash -c 'for i in {1..1000000}; do :; done'
real 0m1.710s
user 0m1.547s
sys 0m0.156s

Cygwin
$ time bash -c 'for i in {1..1000000}; do :; done'
real 0m4.854s
user 0m4.811s
sys 0m0.108s

MinGW64
$ time bash -c 'for i in {1..1000000}; do :; done'
real 0m4.934s
user 0m4.843s
sys 0m0.109s

あとあれから少しわかったのはMinGWは何回か繰り返せば
Cygwinに迫るのでファイル読み込み?とかも少し関連してるんだと思う
が2倍以上かかることに変わりはない

cygwin.dll?とかが遅いのかもな。MinGWでも使ってるんじゃなかったっけ?
2020/05/03(日) 07:25:18.35ID:69WKUEPM
>>708
を、WSL1, Ubuntu 18.04 で、3回やった。
8GB メモリ、CPU-i3・エコモード

real 0m4.680s
user 0m4.234s
sys 0m0.453s
2020/05/03(日) 07:38:38.22ID:HUz+EFHq
>>709
いや比較しないと意味ないだろw
2020/05/03(日) 07:39:48.20ID:HUz+EFHq
ちなみに俺のはCPUはi7な
Cygwin、MinGWを実行したら
それの2倍かかるはず
2020/05/03(日) 21:39:24.17ID:ADBK+oPb
cygwinはforkがヘボいから遅い
MinGWといいつつmsysのbashやろ
これもforkがcygwinゆずりだから遅い。
wslもfork遅いと思うけど。
virtual boxにwindowsファイルを共有させたものの方が実は速い。
純粋にwindowsとLinuxの環境を同居させたきゃ仮想PC
Linuxでwindows binaryをクロスビルド、テストまでしたけりゃwsl
2020/05/03(日) 21:47:49.28ID:v0W4oGhj
まあ名前解決のところと passwd/group の設定はしといた方がいいね
2020/05/03(日) 23:40:13.01ID:sXSeyux8
>>712
forkが遅いのはわかってるけど、
このコードでforkなんて大量にはしないだろ?

time bash -c 'for i in {1..1000000}; do :; done'
715デフォルトの名無しさん
垢版 |
2020/05/04(月) 02:27:10.75ID:R/PLl+Gn
元々、bash が、ループ向きではないから、dash などを使う

for は遅いから、while などを使う。
実行時間中のほとんどが、フォークの時間

ループは、awk, perl, ruby などでは、0.1 秒も掛からない。
単一プロセス中の処理だから
2020/05/04(月) 03:06:12.15ID:szliIti6
あ、dashの結果書くの忘れてた。dashは速いから数を10倍にしてる
傾向は一緒。ただのループなのに2倍ぐらいの差が出てしまう

WSL1
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m4.480s
user 0m2.875s
sys 0m2.047s

Cygwin
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m7.598s
user 0m6.531s
sys 0m1.296s

MinGW64
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m7.905s
user 0m6.905s
sys 0m1.155s
2020/05/04(月) 03:06:42.72ID:szliIti6
>>715
どこでフォークしてるというの?
2020/05/04(月) 03:16:08.18ID:szliIti6
awkは更に速いから、更に10倍にしてる。これなら理解できるな。
CygwinとMinGW64がWSL1より少し遅いのは起動時のパフォーマンスの差だろう
ってことはシェルスクリプトだと、なにか遅くなる処理をやってるってことか
整数型じゃないとか?

WSL1
$ time awk 'BEGIN{i=0;for(i=0;i<100000000;i++);}'
real 0m4.121s
user 0m4.109s
sys 0m0.016s

Cygwin
time awk 'BEGIN{i=0;for(i=0;i<100000000;i++);}'
real 0m4.978s
user 0m4.875s
sys 0m0.031s

MinGW64
$ time awk 'BEGIN{i=0;for(i=0;i<100000000;i++);}'
real 0m4.586s
user 0m4.562s
sys 0m0.015s
719715
垢版 |
2020/05/04(月) 04:54:04.28ID:R/PLl+Gn
for がコマンドだから、フォークされるのだろ。
だから、シェルスクリプトでは、while を使えと言われる

bash よりも、dash を使う。
それ以上は、awk, perl, ruby
2020/05/04(月) 05:14:01.45ID:szliIti6
whileを使うと遅いからforに変えたのですが?
forを使った>>716とループ回数は同じ

WSL1
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m4.480s
user 0m2.875s
sys 0m2.047s

$ time dash -c 'i=0; while [ $i -lt 10000000 ]; do i=$((i+1)); done'
real 0m15.811s
user 0m15.766s
sys 0m0.016s

Cygwin
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m7.598s
user 0m6.531s
sys 0m1.296s

$ time dash -c 'i=0; while [ $i -lt 10000000 ]; do i=$((i+1)); done'
real 0m26.173s
user 0m26.109s
sys 0m0.031s


MinGWはCygwinと大差ないので省略
721715
垢版 |
2020/05/04(月) 07:28:52.02ID:R/PLl+Gn
8年前のシェルスクリプトの本には、
10万行の処理で、

for : 9分
while : 5秒
awk/perl : 0.1秒
722715
垢版 |
2020/05/04(月) 07:33:20.66ID:R/PLl+Gn
$((i+1)) という部分が、コマンドだから遅いのだろう

ほとんどが、そのフォーク時間
2020/05/04(月) 07:37:26.49ID:iIYyf/rd
せいぜいbashのサブコマンドで、forkしとらん気がする
ただマルチスレッドは使ってるかも知れんし、その際のメモリ操作はなんか性能の問題があった気はする
2020/05/04(月) 07:49:25.72ID:szliIti6
>>722
コマンドじゃないよ
2020/05/04(月) 18:39:29.61ID:EvcVp/Zr
$(())内でiを更新できることから分かるようにforkしていないし、少なくともbashとdashはシングルスレッド

linux上で
ltrace -f bash -c 'for i in {1..1000000}; do :; done'
したら、mallocを何度も呼んでいるようだから、ヒープ操作関係が遅い可能性はある
実際、linux上でもmallocの実装をglibcのからjemallocに切り替えたら上のループが2割近く速くなった
2020/05/06(水) 17:53:36.31ID:cyb3WwF6
wsl2は仮想マシンになるのか
windowsバイナリ実行できるのかな
727デフォルトの名無しさん
垢版 |
2020/05/06(水) 19:33:37.07ID:DK8FW5YB
以下のパッケージ、入れようとすると対象が見つからないと出るんだけど・・・

dlfcn
libpng
tools-git
jq
clang
2020/05/06(水) 20:42:44.30ID:Fjn1hDTG
WSL, Ubuntu 18.04 には、jq もあるけど

apt-cache show jq

メンテナー : 陳昌倬
2020/05/06(水) 22:45:14.75ID:UqyV1t7H
>>727
ないんだろ?Cygwinは独自のディストリ
Windowsに移植できたもの、自分が関心があるパッケージしか
登録されていない
730デフォルトの名無しさん
垢版 |
2020/05/11(月) 23:46:54.34ID:77t5bXxM
GCC 10.1まだですか
2020/05/12(火) 00:26:10.57ID:6XbzcR0E
ついにGCCのバージョンも10まできたか・・
2020/05/12(火) 01:18:10.18ID:yS+J4vmz
GCCじゅにや
2020/05/12(火) 07:09:28.82ID:zxRznJOz
カバにダンスをさせるのは
あまり楽しくないそうだ
2020/05/14(木) 00:17:24.56ID:rBW8Yffw
MSYS2でWin32アプリ作ってみようとチャレンジ中
735デフォルトの名無しさん
垢版 |
2020/05/14(木) 10:05:25.88ID:tvxDWcUo
きばれ
tdm-gcc (64)
736デフォルトの名無しさん
垢版 |
2020/05/14(木) 10:09:03.48ID:tvxDWcUo
https://jmeubank.github.io/tdm-gcc/articles/2020-03/9.2.0-release
2020/05/14(木) 10:17:17.31ID:HbCKurWZ
Ruby はやめとけ
738デフォルトの名無しさん
垢版 |
2020/05/22(金) 14:26:50.74ID:DztlkuPK
msys2をサイレントインストールするにはどうしたら良いですか?
2020/05/28(木) 04:57:53.37
WSL2で 9PFs 経由でWin32側のファイルを読み込むの、なんでこんな遅いの?
2020/05/28(木) 05:10:55.81ID:X/662gLn
仮想マシン経由だからでは?
だからWSL1も引き続き開発してるわけで
741デフォルトの名無しさん
垢版 |
2020/05/29(金) 02:44:46.36ID:o1TI0Bdi
そろそろ更新してくれ
742デフォルトの名無しさん
垢版 |
2020/06/23(火) 03:13:01.66ID:1wsAa41I
新版まだですか〜
2020/06/23(火) 04:40:31.79ID:TI7IUkkN
あきらめれ。Cygwinはもうお役御免
2020/06/23(火) 05:19:55.35ID:AJ4z3x9t
同意。mingwは存在意義があるけど、cygwinは役割を終えた。
2020/06/23(火) 07:12:20.62ID:lBX+9FOg
cygwin
ついに死す、か・・
2020/06/23(火) 08:06:26.09ID:oj2a+YQY
大往生だね
2020/06/23(火) 12:40:28.65ID:AJ4z3x9t
mingwは「Git For Windows」のバンドルモジュールとしてしぶとく生き残る。
cygwinはdll依存をなくしてmingwに統合されていくでしょ。
2020/06/23(火) 13:37:46.90ID:IV3AROMx
それを言ったらGit Bashはmsys2のbashだが、bashがmingwに移植されるとは思えんな
2020/06/23(火) 13:44:06.97ID:oj2a+YQY
gcc -staticがデフォじゃないのがよくわからん
じゃあMinGWの立ち位置って何よって
750デフォルトの名無しさん
垢版 |
2020/06/23(火) 13:57:09.75ID:4kHZmTBE
https://www.itmedia.co.jp/enterprise/articles/2006/18/news108.html
http://www.security-next.com/096491
2020/06/23(火) 14:46:14.01ID:ORgy0fyK
bash使いたいならbusybox-w32を使えばいいじゃない
2020/06/23(火) 18:04:53.62ID:IV3AROMx
MinGWの立ち位置?
Win32アプリをビルドできるGCC環境
2020/06/23(火) 18:07:43.51ID:5yVlyLrR
ReactOS Build Environment (RosBE)という選択肢もアリます。
2020/06/23(火) 18:42:37.39ID:sbDHiXI+
MSVC に依存したくないので、mingw をお手軽に維持できる cygwin 環境はありがたいですね…
2020/06/23(火) 18:50:53.69ID:5yVlyLrR
WineHQとかRosBEとかはLinuxでも使えるクロスコンパイラを用意している。まあ、やる人は少ないが。
2020/06/23(火) 18:53:16.90ID:V6B5o2yX
別にlinuxからでもクロスコンパイルできるんやろ?
2020/06/23(火) 19:25:00.34ID:5yVlyLrR
XPでも動くプログラムが作れるってのが味噌。MSYS2はVista+に移行した。
2020/06/23(火) 22:02:49.42ID:AJ4z3x9t
mac OSはzshに移行したというのに
2020/06/23(火) 22:14:53.82ID:MHuIwrXa
移行したと言うか、互換性の点でbashの方が良かったが
bashのライセンスがGPL3に変わって受け入れられなかったから
仕方なくzshにしたってだけだろ
古いbash 3系よりは、zshの方がまだましという消極的な理由
760デフォルトの名無しさん
垢版 |
2020/06/24(水) 11:23:52.65ID:6+kkBVmV
>>752
>>754
tdmgcc で cygwin から解放されました
ほんとうにありがとうございました
761デフォルトの名無しさん
垢版 |
2020/07/23(木) 17:26:38.39ID:VHveRWmf
更新まだですか
762デフォルトの名無しさん
垢版 |
2020/07/25(土) 17:28:58.82ID:zqROUOzo
tdmgcc は wikipedia では開発が止まった事になってるな。
763デフォルトの名無しさん
垢版 |
2020/07/25(土) 19:44:16.83ID:e/b0FSz8
フェラチオザウルスにパクってされちゃうよ
レスを投稿する