X



Cygwin + MinGW + GCC 相談室 Part 8
レス数が900を超えています。1000を超えると表示できなくなるよ。
0548デフォルトの名無しさん
垢版 |
2019/08/22(木) 04:38:34.97ID:Rc8J28Ob
コマンドプロンプトで実行するようなプログラムは
Windowsネイティブアプリにしろよw
0550デフォルトの名無しさん
垢版 |
2019/08/22(木) 06:10:29.02ID:dqAPG5D5
>>548
最初はLinuxで開発してて、それからWindows用に移植したんですよ
で、MinGWが手軽だったからMinGW使ってたんだけど
0551デフォルトの名無しさん
垢版 |
2019/08/22(木) 10:15:45.06ID:xQsiKIbM
そんな用途には tdmgcc64 おすすめ
0556デフォルトの名無しさん
垢版 |
2019/08/24(土) 06:55:34.51ID:Glqz8i+r
TDM-GCCでビルドしたら遅いの無くなったかもしれない(*´Д`)!!!
>>551
>>553
もう少し様子見るけど、まじでありがとう

>>555
これはMinGWとは違うの?
0557デフォルトの名無しさん
垢版 |
2019/08/24(土) 09:36:31.35ID:u2q8uNB0
staticになってるだけというオチだったらわろす
0559デフォルトの名無しさん
垢版 |
2019/08/24(土) 17:29:38.98ID:Glqz8i+r
staticオプションは特に指定しませんが……
dllの読み込みが原因だとしたらstaticにすれば解決という話ですか
そういう発想はなかった

>>558
--mtune=skylakeってなんですか?
0560デフォルトの名無しさん
垢版 |
2019/08/24(土) 17:48:35.57ID:u2q8uNB0
DLLよりstaticが速いとか都市伝説
0561デフォルトの名無しさん
垢版 |
2019/08/25(日) 16:54:37.16ID:z6AAmiat
>>559
-O3はコードの最適化を3レベル(あるいはタイプ3)で行う
実際に何を行っているかはコンパイランの説明を読まないと分からない
-mtune=skylakeはコードをIntel CPUのSkyLakeアーキテクチャで最適な形にする
どちらも記述したコードを実行形式にするときに最適化を行うオプションなので、
非常に大きなコードを書いた際や似たような処理を繰り返すコードを書いている際に
指定すると早くなる事もある(ライブラリに含まれるコードは最適化されない)

>>560
都市伝説ってこともない

関数A、B、C、Dが含まれるライブラリlibhogeが存在する場合、自分のプログラムで
関数BとDだけを使っていると、ダイナミックリンクの場合自分のプログラムの実行
コードに加えてすべての関数が含まれるlibhoge.dll全体を読み込む必要がある
スタックリンクの場合には自分のプログラムの実行コードに加えてlibhoge.aから抽出した
関数BとDのコードを読み込むだけなので関数AとCのコードを読み込まない分ロードが
早くなる可能性は高くなる

ただし、実際問題としてはdllを一回読み込めばキャッシュからなくならない限り読み込む
必要がない+Windowsのプログラミングで使用するライブラリで基本的なものは通常
システムを起動した時点でキャッシュされていることに加えて、Windowsでプログラムを
動かすために必要な関数郡はかなりの量になる事が多いのでスタティックにリンクすると
すでにキャッシュされている関数郡を使わずに、必要な関数郡を含んだ大きなコードを
読み込む必要があるのでスタティックリンクの方が起動が遅くなるって本末転倒な事態が
発生することもある

MinGWの場合にはWindows一般では使わないライブラリを使用するので1回目の
起動時には必要なdllを読み込むよりは、必要な関数のみをリンクしたスタティックな
状態の方が早い場合があるかもってこと
0563デフォルトの名無しさん
垢版 |
2019/08/25(日) 23:51:01.48ID:V1f8d4H1
>>561
ということは--static -O3 -mtune=skylakeでビルドすれば起動が早くなるかもということですか
時間があるときに試したいと思いますm(_ _)m
0564デフォルトの名無しさん
垢版 |
2019/08/26(月) 01:28:47.93ID:K2zp8I6+
やっぱり名前解決の問題が大きいんすよ
ライブラリの読み込みだけでは説明できない
0565デフォルトの名無しさん
垢版 |
2019/08/26(月) 14:11:24.03ID:T0vtMl8v
>スタックリンクの場合には自分のプログラムの実行コードに加えてlibhoge.aから抽出した
>関数BとDのコードを読み込むだけなので関数AとCのコードを読み込まない分ロードが

これ関数単位でソース分けてあって
一関数が一objになってる場合だけだよな
0566デフォルトの名無しさん
垢版 |
2019/08/26(月) 14:11:24.09ID:T0vtMl8v
>スタックリンクの場合には自分のプログラムの実行コードに加えてlibhoge.aから抽出した
>関数BとDのコードを読み込むだけなので関数AとCのコードを読み込まない分ロードが

これ関数単位でソース分けてあって
一関数が一objになってる場合だけだよな
0567デフォルトの名無しさん
垢版 |
2019/08/26(月) 17:43:39.53ID:eYWa871J
dll読み込みってそんなに重いかな?
なんか別のところで時間がかかっていそうな感じ。
0568デフォルトの名無しさん
垢版 |
2019/08/26(月) 21:44:29.54ID:CEMf0Y7L
>>565-566
MinGWの場合はそうかな。確かMinGWでは--gc-sectionsが効かなかったかと。
LTOで未使用関数が除去されるかもしれないけどバグが多いので試してない。
0569デフォルトの名無しさん
垢版 |
2019/08/27(火) 05:30:30.81ID:FSIINwco
>>563
でビルドしてみました
様子見します
-O3は、前にビルドしたときにプログラムがうまく動作しないことがあったんですよね
-O0にすると正常に動作したんですけど
0570デフォルトの名無しさん
垢版 |
2019/08/27(火) 09:41:49.02ID:NZJyfwBK
-O3に完璧を求める方が可笑しい
0572デフォルトの名無しさん
垢版 |
2019/08/27(火) 12:32:02.21ID:j4wzaSFP
-O3と-O0で挙動が違うのは、不定の値を使っているとか、
未規定の動作に依存しているとか、そういう系だぞ

まれにコンパイラのバグということもあるが大抵てめーが悪い
0573デフォルトの名無しさん
垢版 |
2019/08/28(水) 17:10:08.53ID:w9RtsrXP
VCで造られたdllをmingwのgccで使いたいです
hoge.dll と hoge.lib は有るのですが
libhoge.a がありません
あと hoge.c とかのソースファイルもありません
hoge.def は hoge.dll から作れるのですが
hoge.lib から libhoge.a を作るのはどうすればよかったか思い出せません
0575デフォルトの名無しさん
垢版 |
2019/08/28(水) 17:45:16.06ID:4qorfKL6
実際parallelstlをコンパイルするのはVCの方が楽だしな
これを.aに変換したいと思っていたのでありがたいです
0580デフォルトの名無しさん
垢版 |
2019/09/13(金) 15:13:51.93ID:ud7Tmahn
cygwin の fork = native じゃなくて emu
mingw の fork = あるんか?
0581デフォルトの名無しさん
垢版 |
2019/09/13(金) 16:40:00.05ID:08rV0d8/
MinGW+MSYS2がCygwinより速い理由は
Cygwinはたとえ遅くなろうとも完璧なエミュレートを目指してるのに対して
MinGW+MSYS2は目指してないから
0582デフォルトの名無しさん
垢版 |
2019/09/13(金) 18:56:41.57ID:2jKM3FP9
MSYS2は、Windowsネイティブアプリを作るための環境です。
Windowsネイティブアプリを作りましょう。
0588デフォルトの名無しさん
垢版 |
2019/10/02(水) 07:41:31.63ID:WxowMW3Q
GMPって真面目にソースtarからビルドするしかないの? ビルド済みのバイナリですぐ使えるのがあれば欲しいんだけどcygwinのインストーラでチェック入れてもダメで、なんじゃこりゃってなってるんだけど。
0590デフォルトの名無しさん
垢版 |
2019/10/02(水) 11:46:15.82ID:55+aQRnY
4.1.2 は解決
0594593
垢版 |
2019/10/19(土) 15:58:06.55ID:US3VZtYL
arch linuxので解決
0595デフォルトの名無しさん
垢版 |
2019/11/10(日) 23:46:15.76ID:vZIjc/J6
長期間更新がありませんが何か支障があるのでしょうか・・
0596デフォルトの名無しさん
垢版 |
2019/11/14(木) 16:18:35.97ID:m0xrmwtq
>>595
あるよ
0597デフォルトの名無しさん
垢版 |
2019/11/15(金) 14:11:12.27ID:L6hfSVpN
>>595
ないない
0600デフォルトの名無しさん
垢版 |
2019/12/23(月) 02:13:46.99ID:IO6RyZUn
Cygwin って /cygdrive上ではディレクトリまたげないんだけど、これってそんなもんだったっけ?


かなり久しぶりにCygwinを使おうとしているのだが困っている。
ディレクトリ構成 D:\DEV\debug で
下のディレクトリから上のディレクトリのファイルをコピーする、以下のコマンドが通らない。

MyMachine@MyName /cygdrive/d/dev/debug
$ cp ../some_file .

ディレクトリまたげないんだけど、こんなんだったっけ?
なお / をバックスラッシュにしても駄目。
なお/home以下のディレクトリならこれらのコマンドは通る。あまり試していないが、おそらく、/cygdrive以下だけ駄目。

何か設定がおかしい?それともこんなものだったっけ?
なお今のところディレクトリをまたげないだけでカレントについてはコマンドは通る。
0602デフォルトの名無しさん
垢版 |
2019/12/23(月) 12:40:57.34ID:sEnpgkKc
もちつけ
他人のせいにする前に自分を疑え
0604デフォルトの名無しさん
垢版 |
2019/12/23(月) 13:59:53.49ID:IO6RyZUn
>>602
それはそうだが普段シンボリックリンクである事なんて意識しないからな。
いまだにcygwinではNTFSのシンボリックリンクを辿れないのはしょぼいと思うが。
なお32bit版。bashはversion4.4.12(3)、cygwin1.dll はversion 3001.2.0.0
(昨日の時点でsetup.exeを使いBestに更新)

64bit版なら行けるのかも?誰か動作報告よろしく。
0605デフォルトの名無しさん
垢版 |
2019/12/23(月) 14:06:09.78ID:sEnpgkKc
NTFSのリンクはシンボリックリンクではないでしょ
0609デフォルトの名無しさん
垢版 |
2019/12/23(月) 15:40:22.34ID:Losi+wwQ
共有フォルダ作るときなんか
シンボリックリンクとジャンクションの違いを知らないと困るだろうが
0610デフォルトの名無しさん
垢版 |
2019/12/23(月) 15:41:13.85ID:sEnpgkKc
みなさん思いのほか親切ですね
0611デフォルトの名無しさん
垢版 |
2019/12/23(月) 15:47:56.41ID:nbY+qllN
>>604
シンボリックリンクもジャンクションも辿れるし、環境変数の設定(CYGWIN=winsymlinks:nativestrict)によってはln -sやtarの展開でNTFSのシンボリックリンクができる
NTFS側でD:とかをリンク先にしても、勝手に/cygdrive/d以下に読み替えてくれる
cygdrive以下だけ動かないなら、/etc/fstabの設定がおかしいとか?
0612デフォルトの名無しさん
垢版 |
2019/12/23(月) 15:48:24.03ID:sEnpgkKc
だけどシンボリックリンクωを名乗ってるだけでシンボリックリンクではないですねこれ
0614デフォルトの名無しさん
垢版 |
2019/12/23(月) 15:54:08.35ID:qAO2lZtX
Windowsには
1.ハードリンク
2.ジャンクション
3.あほなシンボリックリンク
4.だるいシンボリックリンク
がある
0615デフォルトの名無しさん
垢版 |
2019/12/23(月) 16:12:25.30ID:IO6RyZUn
>>611
すまんが、/cygdrive以下だけ動かない、というのは間違いだった。
動作としては、シンボリックリンクを辿ることは出来るが、戻れない、というものだ。

本来はシンボリックリンクはカレントと共に使用される。
つまりD:/dev/debugがシンボリックリンクでそこにD:/devからcdして入ったら、 cd .. だとD:/devに戻って来れないといけない。
(シンボリックリンク先に入った時の元に戻る。他から入ったらそこに当然戻る)
これが出来ておらず、debugしかないディレクトリ(というものを作って渡しているのだと思う)に戻ってしまう。
だから下から上が参照出来ない。上から下は参照出来るし、
下から上でも自分に戻ってくるのなら参照出来る。(言葉だと分かりにくいが要するに以下が通る)
MyMachine@MyName /cygdrive/d/dev/debug
$ less ../debug/some_file
下から上でもファイル名の補完は出来るのでbash自体は動作してる。
なお cd ../.. とシンボリックリンクを跨いで2つ上がることは可能。
cdってbashのコマンドだっけ?だとして、やはりbash自体は動作してる。
bashから各アプリに渡す時に失敗しているか、cygwin1.dll自体が対応してないか、だと思う。

バグ報告してもいいけど、それ以前に64bit環境の動作を確かめてからでないとウザがられる。
というわけで普段から64bit環境で使っている人がいたら試してみてくれ。


>>612
いや完全にシンボリックリンクだよ。
ln -s と使い勝手は同じ。
0618デフォルトの名無しさん
垢版 |
2019/12/23(月) 22:27:33.69ID:nMe23UdH
>>615
何をしようとしているか大体分かった。
・/cygdrive/d/dev/debug はシンボリックリンクで /cygdrive/d/test/debug を指すと仮定
・/cygdrive/d/dev/some_file があると仮定
このとき
・まずcd /cygdrive/d/dev/debugする
・次にcp ../some_file .するとファイルが無いと言われる
ということだと思う。もしそうならそれがUNIX系では普通。LinuxやMacでもそうなる。

これは、cdした時点で既にカレントディレクトリが/cygdrive/d/test/debugに移っているからで、cpは/cygdrive/d/test/some_fileを読もうとしているために起こる。つまり
>本来はシンボリックリンクはカレントと共に使用される。
がUNIX的には正しくない。

実際の挙動としては、
・UNIXの場合、カーネル的にはカレントディレクトリはあくまでもディレクトリで、シンボリックリンクをパスの途中に含むことはできない
・cd ..でもといたディレクトリに戻るのはbashがシンボリックリンクを本当のデイレクトリのようにエミュレーションしているから(set -Pで切れる)
・これは基本的には内部コマンドのcdやpwdに対してのみできることで、外部コマンドのcpやlessに対してはできない(引数の..が親ディレクトリの意味になるかはコマンドに依存するから、シェルが勝手に置き換えられない)
・シェルはPWD環境変数にシンボリックリンクを含むロジカルなカレントディレクトリを出力するので、これを見るようにすれば原理的には外部コマンドもエミユレーションに対応できる(危なっかしいので普通はしない)

WindowsのシンボリックリンクはUNIXと違ってOS自体がシンボリックリンクを含むカレントディレクトリを扱っているようだが、CYGWINはUNIXに合わせていると考えられる。
0619デフォルトの名無しさん
垢版 |
2019/12/23(月) 23:39:27.27ID:IO6RyZUn
>>618
こちらの状況は正しく伝わっており、君の言っていることも正しい。
こちらも615を書いた後、遠い昔にシンボリックリンク周りでトラブった記憶があり、
あれはなんだったかな?と思っていたところだった。

つまりbashで上手く誤魔化していてくれているわけだ。
ではtcshは?と確認したが、こちらもsymlinks変数で誤魔化し方を調整出来るようになっている。
https://linuxjm.osdn.jp/html/tcsh/man1/tcsh.1.html
結果、Cygwinとしては仕様通り、UNIXは糞仕様(≒仕様バグ)だな。

突っ込む必要はないと思うが、
> (引数の..が親ディレクトリの意味になるかはコマンドに依存するから、シェルが勝手に置き換えられない)
これはよく分からない。
bashがコマンドに引数を渡すときにあらかじめシンボリックリンク周りを解決していたら、どういう問題が発生する?
というかtcshだとsymlinks=expandに設定したらそうなるらしい。
今回で言えば、
MyMachine@MyName /cygdrive/d/dev/debug
$ cp ../some_file .
を cp /cygdrive/d/dev/somefile /cygdrive/d/dev/debug として実行すれば問題ないはず。
(.を展開する必要はないかもだが)
既存シェルスクリプトの互換性が無くなるだけなら仕様バグでした、残念でした、でしかなく、
後発のwindowsでは修正されているということになる。
シンボリックリンクを辿って、その上の「論理的ではない、物理的上位ディレクトリ」を辿る必要がある使い方なんて無いはず。

なお上記man of tcshのsymlinksの最後の
> > cd ".."; echo $cwd
> /tmp/from
> > /bin/echo ..
> /tmp/to ←これがよく分からん、/tmpではなくて?あるいはコマンドが .. ではなく /bin/echo . なら納得だが
> > /bin/echo ".."
> ..
分かれば出来れば解説よろしく。
0620デフォルトの名無しさん
垢版 |
2019/12/23(月) 23:43:56.19ID:gENEPh5i
WindowsがーではなくCygwinの問題でしょ
WindowsはWindowsの仕様でやってる。それがなんであれ正しい仕様

Cygwinがエミュレート機能をすべて行ってる
問題があるならそれはCygwinの問題

WSLならその問題も解決してるだろうさ
0621デフォルトの名無しさん
垢版 |
2019/12/23(月) 23:58:57.35ID:IO6RyZUn
>>620
それは違う。
Cygwinはエミュレーションレイヤーを提供しており、つまりUnixのシステムコールを受け付けているだけ。
だから仕様としてUnixと同じ動作になる。
詳しくはWikiなり本家なり読めばいい。

問題はUnixの糞仕様が今も修正されずそのままbash等で誤魔化され続け、
windowsでは修正された?為に動作が異なっている事による。
ただこれをCygwinで修正することは出来ないし、するべき事柄でもない。
0622デフォルトの名無しさん
垢版 |
2019/12/24(火) 00:05:26.55ID:8h2rOUkn
> Cygwinはエミュレーションレイヤーを提供しており、つまりUnixのシステムコールを受け付けているだけ。
ただしい

? だから仕様としてUnixと同じ動作になる。
○ 仕様としてUnixと同じ動作になるように目指すべきだが、できてない
0623デフォルトの名無しさん
垢版 |
2019/12/24(火) 00:06:45.59ID:8h2rOUkn
なんか文字化けする方法のバツを記録してるな。これでいいか?

× だから仕様としてUnixと同じ動作になる。
○ 仕様としてUnixと同じ動作になるように目指すべきだが、できてない
0624デフォルトの名無しさん
垢版 |
2019/12/24(火) 00:22:04.30ID:6GYTbaHl
>>620
なおWSLは理屈上はUnixの動作になるはず。
ただしbash等を見る限り既知の問題だから対策出来そうではあるが、
バイナリ互換なので現実的に無理だと思う。
(もちろんwindows専用bashを用意すればいいが、それだと既存のシェルスクリプトが動かなくなる。
といってもそれで問題が発生するような奴はWSLなんて使わずDockerだと思うが)

が、まあ、俺に関して言えば、
問題の詳細は判明し、特段問題ないから当面はCygwinを使う。


(すまんがNGに当たっているようなのでバラバラにして投稿する)
0625デフォルトの名無しさん
垢版 |
2019/12/24(火) 00:23:19.80ID:6GYTbaHl
(すまんがNGに当たっているようなのでバラバラにして投稿する)

>>623
> ○ 仕様としてUnixと同じ動作になるように目指すべきだが、できてない
違う。そこを目指してない。
CygwinはUnixのシステムコールをcygwin1.dllが受け付けることにより、
GNU等が書き溜めた膨大なUnix向けCソースをそのまま動作させることを目標としている。
結果、ありとあらゆるUnixのツールがcygwin上では動くので、大成功している。
0626デフォルトの名無しさん
垢版 |
2019/12/24(火) 00:24:32.17ID:6GYTbaHl
>>623続き

windowsのCMD。EXEのエミュレーションなんて必要ないし、目指してもいない。
本家でも読め。

そして認識も間違っている。CygwinはUnixと同じ動作になってる。つまり、「できてる」
0627デフォルトの名無しさん
垢版 |
2019/12/24(火) 00:29:23.48ID:d/S5Qnsu
>>619
・tcshのmanは間違っているだけだと思う。実際試したら想定通り/tmpになった。
・シェルが勝手に置き換えるべきではないというのは、単にgrep ..とかの動作が今までと変わって直感的でなくなるあたりの問題。.や..の置き換えの仕様とエスケープやクォートの仕様を十分理解すればまあそんなに困らないとは感じる。
0628デフォルトの名無しさん
垢版 |
2019/12/24(火) 00:49:31.91ID:6GYTbaHl
>>627
おおサンクス、手元にこなれた環境がないので助かる。
しかし今更このレベルの誤字ってあるかね?
まあtcshなんて今時誰も使ってないが、他のマニュアルもそうなってるし。
https://linux.die.net/man/1/tcsh
とはいえ実行結果がそうなのならそれが一番信憑性があるが。

Unixは今更直せないで行くのだろうけど、WSLの際にMS内部ではどうするか検討してるだろうね。
WSL推しの人はどうぞ動作報告よろしく。
0631627
垢版 |
2020/02/21(金) 14:13:26.80ID:3bMJAyBr
>>630
ごめんなさい。
0632デフォルトの名無しさん
垢版 |
2020/03/07(土) 09:24:50.59ID:6t68C04E
このところ、MSYS2 の pacman を実行するとエラーが出るな
サーバー不調なん?それとも pacman がバグった?
一度アンインストールして最初から入れなおしてもダメやった・・・
0634デフォルトの名無しさん
垢版 |
2020/03/12(木) 11:58:54.03ID:MzPDqAwN
自分の回線を疑う気は皆無か
0636デフォルトの名無しさん
垢版 |
2020/03/25(水) 09:30:19.85ID:C+0WfFNh0
回線があまりに遅いと向こうからお断りしてくるのでは
0638デフォルトの名無しさん
垢版 |
2020/04/02(木) 18:00:43.50ID:1pp0Yvcl
今更
pacmanでfork errorでまくったので見切った。
wslでLinux入れてmingw64クロスコンパイルしている。
wslのコンソールでwindowsバイナリもそのまま動くし良い。
cygwinやmsysみたいにcygwin, msysバイナリとwindowsバイナリが混在することの混乱もないしさらに良い
0639デフォルトの名無しさん
垢版 |
2020/04/03(金) 04:00:25.48ID:FV+QUjkb
GCC 9.3を早く出してくれ
0640デフォルトの名無しさん
垢版 |
2020/04/03(金) 09:51:54.29ID:yEeayoKI
pacmanでfork errorの一番の解決策は
ちゃんと出てきたメッセージを読むこと
これに尽きる
638がそうなのかは知らんが
0642デフォルトの名無しさん
垢版 |
2020/04/06(月) 09:55:13.35ID:m+LKHOnj
WSLで使うディストリビューション(ArchとかUbuntuとか)によるでしょう
共通して言えるのはLinuxではセキュリティ修正の取り込みは早い
0645デフォルトの名無しさん
垢版 |
2020/04/19(日) 22:00:29.69ID:+AizyWB9
WSLがある以上、MSYSのメンテはもう廃れるだろうな。
意味ねーし。
cygwinはXのためだけに存在する
0648デフォルトの名無しさん
垢版 |
2020/04/20(月) 04:16:21.28ID:DIgHaEzI
更新が止まってしまった
0650デフォルトの名無しさん
垢版 |
2020/04/20(月) 07:25:19.48ID:vhP2C7pa0
マジかよシグウィン窓から投げ捨てた
WSL派になります
0652デフォルトの名無しさん
垢版 |
2020/04/20(月) 09:12:16.95ID:aqwTNz7b
Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト

anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える。
~/.bashrc に、下の2行を追加するだけで、各言語ごとに追加しないでも良い

export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
0653デフォルトの名無しさん
垢版 |
2020/04/20(月) 09:13:30.71ID:lEczCUui
MSYS+MinGW、仮想マシン+Linuxって感じでWSLの入る余地がない
WSL+MinGWツールチェーンにすれば仮想マシンすら必要ないって考えもあるけど
やっぱり仮想マシンは手放せないからWindows側はMSYSでいいやってなる
0655デフォルトの名無しさん
垢版 |
2020/04/20(月) 13:58:21.58ID:2UEzrf8e
>>653
MSYS+MinGWで何作ってるの?
Windowsアプリ?

まあWindowsアプリしかないよね。
WSLはLinuxアプリを作って動かすものなので目的が違うよ。
0656デフォルトの名無しさん
垢版 |
2020/04/20(月) 14:00:46.58ID:2UEzrf8e
仮想マシンは手放せないけど、仮想マシンはほぼテスト環境になった
作ったアプリを動かすための環境

普段の開発でテストのためだけの環境を使う気にならない
起動重いしメモリ食うし
0657デフォルトの名無しさん
垢版 |
2020/04/20(月) 14:10:17.96ID:X6dUog3k
起動したままで良い
メモリ喰うのは諦めろ
0658デフォルトの名無しさん
垢版 |
2020/04/20(月) 14:16:53.62ID:agWbeiM9
msys+mingw入れて何がしたい?
ffmpegをビルドしたいから
0659デフォルトの名無しさん
垢版 |
2020/04/20(月) 14:17:05.96ID:2UEzrf8e
ああ、なるほど。テスト環境じゃないから
一つしか仮想マシンがないんだな

それぞれ微妙に異なるからテスト環境(仮想マシン)は
プロジェクトごとに必要なんだよ
0660デフォルトの名無しさん
垢版 |
2020/04/20(月) 14:18:38.31ID:2UEzrf8e
>>658
LinuxツールのWindowsネイティブ版への移植以外になんかあるの?
ffmpegもそうだし

まあ全員がWSLをインストールしてるとは限らないから
Windowsネイティブ版を作る意味はあるだろうね。
0662デフォルトの名無しさん
垢版 |
2020/04/20(月) 21:50:47.06ID:vn9gJe4h0
cygwin
mingw
wsl

作ったアプリの動作時オーバーヘッド(動作速度)が大きい順に並べて
0664デフォルトの名無しさん
垢版 |
2020/04/20(月) 21:57:01.49ID:vn9gJe4h0
マジかよWSLに失望しました。窓から投げ捨ててMinGWに乗り換えます
0667デフォルトの名無しさん
垢版 |
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

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

PowerShellはUNCパスに対応しているからWSLのディレクトリにも入れる
コマンドプロンプトから実行するコマンドもUNCパスに対応していれば参照できる
またネットワークフォルダはドライブに割り当てることが出来るので
ドライブに割り当てればコマンドコマンドからWSLのディレクトリに入ることも出来る
0681デフォルトの名無しさん
垢版 |
2020/04/27(月) 19:56:20.68ID:AD9YXzU7
ちなみにcdの代わりにpushdを使えば
コマンドコマンドからUNCパスに移動できる
一時的にドライブを割り当てているだけだが
0683デフォルトの名無しさん
垢版 |
2020/04/27(月) 23:26:27.00ID:hGgbh3Gh
windowsのSSHサーバ立ち上げてwslをシェルにできるのは便利
PowerShell極めてるひとなら不要かもしれんけどね
0685デフォルトの名無しさん
垢版 |
2020/04/28(火) 10:52:09.80ID:zAZN/f3s
マジレスするとmsys使ってて問題無ければwsl要らない
0686デフォルトの名無しさん
垢版 |
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の代わりとして使うものじゃない
0688デフォルトの名無しさん
垢版 |
2020/04/28(火) 17:30:05.30ID:7TaGv6sC
>>687
シンボリックリンクでホームディレクトリ以下から
アクセスしやすくするのがおすすめ
色々と混ざらないし複数のディストリでも共有できる
0689デフォルトの名無しさん
垢版 |
2020/04/28(火) 18:17:52.10ID:eCWBo+Hl
色々と混ぜたいからホームディレクトリを一緒にするんだろ
そうじゃなければ最初から分けとけばいいだけの話だ
0692デフォルトの名無しさん
垢版 |
2020/04/29(水) 09:35:11.34ID:TuLha3Ht
混ぜるな危険
0694デフォルトの名無しさん
垢版 |
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 側へアクセスできる
0695デフォルトの名無しさん
垢版 |
2020/04/29(水) 10:38:59.10ID:Cpi+Il5+
>>679
コマンドプロンプト・PowerShell で、wsl と入力すれば、WSLが起動する

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

これで、WSLを起動して、Linux側のプロジェクトを開ける
0696デフォルトの名無しさん
垢版 |
2020/04/29(水) 11:51:03.18ID:Jemg3aCN
wsl, opensuse leapにmingw64入れてクロスビルドしてる。
configure作って--hostでmingw指定すれば楽勝すぎて屁が出そう
0700デフォルトの名無しさん
垢版 |
2020/05/02(土) 23:21:47.63ID:nkPqW+JC
MinGWっていうかGitBash環境なんだけど
WSL1より2倍ぐらいシェルスクリプトが遅いんだよね
どこが原因かわからんけどこんなもん?
なにか大きな差がでるポイントでもあるんかね?
0701デフォルトの名無しさん
垢版 |
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倍の差がでてるから
もうこれはどうしようもないのか?
0702デフォルトの名無しさん
垢版 |
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の処理だけなはずなんだけどなぁ
0705デフォルトの名無しさん
垢版 |
2020/05/03(日) 05:24:47.68ID:HUz+EFHq
radeonの話は画面に出力が絡むなら
関係ありそうな気もするけど、それ以外でも発生するんだろうかね
あとHOMEは MinGWは /c/Users/myname
Cygwinは/home/mynameだ
0706デフォルトの名無しさん
垢版 |
2020/05/03(日) 05:26:40.40ID:HUz+EFHq
よく見ると大きな差があるのはuser空間だから
コンパイルオプションが違ってるとかなのかな?
0708デフォルトの名無しさん
垢版 |
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でも使ってるんじゃなかったっけ?
0709デフォルトの名無しさん
垢版 |
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
0712デフォルトの名無しさん
垢版 |
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
0714デフォルトの名無しさん
垢版 |
2020/05/03(日) 23:40:13.01ID:sXSeyux8
>>712
forkが遅いのはわかってるけど、
このコードでforkなんて大量にはしないだろ?

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

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

ループは、awk, perl, ruby などでは、0.1 秒も掛からない。
単一プロセス中の処理だから
0716デフォルトの名無しさん
垢版 |
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
0718デフォルトの名無しさん
垢版 |
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
0719715
垢版 |
2020/05/04(月) 04:54:04.28ID:R/PLl+Gn
for がコマンドだから、フォークされるのだろ。
だから、シェルスクリプトでは、while を使えと言われる

bash よりも、dash を使う。
それ以上は、awk, perl, ruby
0720デフォルトの名無しさん
垢版 |
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と大差ないので省略
0721715
垢版 |
2020/05/04(月) 07:28:52.02ID:R/PLl+Gn
8年前のシェルスクリプトの本には、
10万行の処理で、

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

ほとんどが、そのフォーク時間
0723デフォルトの名無しさん
垢版 |
2020/05/04(月) 07:37:26.49ID:iIYyf/rd
せいぜいbashのサブコマンドで、forkしとらん気がする
ただマルチスレッドは使ってるかも知れんし、その際のメモリ操作はなんか性能の問題があった気はする
0725デフォルトの名無しさん
垢版 |
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割近く速くなった
0727デフォルトの名無しさん
垢版 |
2020/05/06(水) 19:33:37.07ID:DK8FW5YB
以下のパッケージ、入れようとすると対象が見つからないと出るんだけど・・・

dlfcn
libpng
tools-git
jq
clang
0729デフォルトの名無しさん
垢版 |
2020/05/06(水) 22:45:14.75ID:UqyV1t7H
>>727
ないんだろ?Cygwinは独自のディストリ
Windowsに移植できたもの、自分が関心があるパッケージしか
登録されていない
0730デフォルトの名無しさん
垢版 |
2020/05/11(月) 23:46:54.34ID:77t5bXxM
GCC 10.1まだですか
0735デフォルトの名無しさん
垢版 |
2020/05/14(木) 10:05:25.88ID:tvxDWcUo
きばれ
tdm-gcc (64)
0738デフォルトの名無しさん
垢版 |
2020/05/22(金) 14:26:50.74ID:DztlkuPK
msys2をサイレントインストールするにはどうしたら良いですか?
0741デフォルトの名無しさん
垢版 |
2020/05/29(金) 02:44:46.36ID:o1TI0Bdi
そろそろ更新してくれ
0742デフォルトの名無しさん
垢版 |
2020/06/23(火) 03:13:01.66ID:1wsAa41I
新版まだですか〜
0747デフォルトの名無しさん
垢版 |
2020/06/23(火) 12:40:28.65ID:AJ4z3x9t
mingwは「Git For Windows」のバンドルモジュールとしてしぶとく生き残る。
cygwinはdll依存をなくしてmingwに統合されていくでしょ。
0749デフォルトの名無しさん
垢版 |
2020/06/23(火) 13:44:06.97ID:oj2a+YQY
gcc -staticがデフォじゃないのがよくわからん
じゃあMinGWの立ち位置って何よって
0754◆QZaw55cn4c
垢版 |
2020/06/23(火) 18:42:37.39ID:sbDHiXI+
MSVC に依存したくないので、mingw をお手軽に維持できる cygwin 環境はありがたいですね…
0755蟻人間 ◆T6xkBnTXz7B0
垢版 |
2020/06/23(火) 18:50:53.69ID:5yVlyLrR
WineHQとかRosBEとかはLinuxでも使えるクロスコンパイラを用意している。まあ、やる人は少ないが。
0757蟻人間 ◆T6xkBnTXz7B0
垢版 |
2020/06/23(火) 19:25:00.34ID:5yVlyLrR
XPでも動くプログラムが作れるってのが味噌。MSYS2はVista+に移行した。
0759デフォルトの名無しさん
垢版 |
2020/06/23(火) 22:14:53.82ID:MHuIwrXa
移行したと言うか、互換性の点でbashの方が良かったが
bashのライセンスがGPL3に変わって受け入れられなかったから
仕方なくzshにしたってだけだろ
古いbash 3系よりは、zshの方がまだましという消極的な理由
0760デフォルトの名無しさん
垢版 |
2020/06/24(水) 11:23:52.65ID:6+kkBVmV
>>752
>>754
tdmgcc で cygwin から解放されました
ほんとうにありがとうございました
0761デフォルトの名無しさん
垢版 |
2020/07/23(木) 17:26:38.39ID:VHveRWmf
更新まだですか
0762デフォルトの名無しさん
垢版 |
2020/07/25(土) 17:28:58.82ID:zqROUOzo
tdmgcc は wikipedia では開発が止まった事になってるな。
0763デフォルトの名無しさん
垢版 |
2020/07/25(土) 19:44:16.83ID:e/b0FSz8
フェラチオザウルスにパクってされちゃうよ
0765デフォルトの名無しさん
垢版 |
2020/08/02(日) 17:49:35.08ID:5nHbYcRj
GCC10.2が出ましたが更新まだですか
0769デフォルトの名無しさん
垢版 |
2020/09/06(日) 05:21:00.21ID:6+AOMFkl
どこ。
0772デフォルトの名無しさん
垢版 |
2020/09/12(土) 15:31:34.91ID:cDX1Q2rT
どこもろ
0773デフォルトの名無しさん
垢版 |
2020/09/13(日) 02:49:17.38ID:H5kZw8iZ
どこやねん
0783デフォルトの名無しさん
垢版 |
2020/09/24(木) 04:03:25.38ID:Qc2kqk0D
隅から隅まで探さないといけないやつを検索すらできないのかっていうのはなんか違わない?????
僕そもそもなぜかCygwinの話だと思ってたからそれ以前の問題なんですけど
0784デフォルトの名無しさん
垢版 |
2020/09/24(木) 08:19:03.36ID:hsn7nUMR
こまけーことは気にせずにmsys2使っときゃええんやで
cygwinはなあ…gccの更新いつも遅いから
0786デフォルトの名無しさん
垢版 |
2020/09/25(金) 05:05:33.50ID:xdrtZXMH
Git for Windows にバンドルされてるbash使えばいい。
ビルド環境はStrawberry Perlにバンドルされてるのを使えばいい。
0787デフォルトの名無しさん
垢版 |
2020/09/25(金) 10:53:31.32ID:4ovx1Tzj
git bash まじ重宝
0791デフォルトの名無しさん
垢版 |
2020/09/27(日) 17:39:43.97ID:RCK09O0u
ライブラリをストリップしたらあかんのではないかな
gccのオプションにexceptionのなんかがあった気がする
0794デフォルトの名無しさん
垢版 |
2020/09/28(月) 17:33:38.94ID:QxfbhGyV
Visual Studioに入ってるdumpbinに相当するコマンドある?
DLLのエクスポートテーブルを覗きたいんだけど
0795デフォルトの名無しさん
垢版 |
2020/09/28(月) 18:01:48.48ID:zjrobJ8x
digitalmars_com /ctg/implib.html
wiki_dlang_org /Win32_DLLs_in_D
www_kmonos_net /alang/d/dll.html
0797デフォルトの名無しさん
垢版 |
2020/10/16(金) 19:44:08.37ID:UdyDW7b6
オーイ
0800デフォルトの名無しさん
垢版 |
2020/11/09(月) 21:03:17.57ID:IuElySO5
fork: retry: resource temporarily unavailable とかでて直せない。
rebaseallとかやっても効果ないみたいだし
もうcygwin、msysのテストやめようかな
0801デフォルトの名無しさん
垢版 |
2020/11/10(火) 12:08:26.08ID:08CevRpc
おそらく D よりも需要無い
0803デフォルトの名無しさん
垢版 |
2020/12/15(火) 15:11:54.58ID:XwGFb1c9
MSYS2には、lscpuコマンドはないのかな?
CentOSなんかだとutil-linuxパッケージに入ってるけど、MSYS2のには入ってないもよう。。。
0806デフォルトの名無しさん
垢版 |
2020/12/15(火) 17:22:03.48ID:ME0vqtfe
MinGWって終わってるよな
0811デフォルトの名無しさん
垢版 |
2020/12/23(水) 09:37:51.13ID:vcwRrO0n
コロナもどんどん変異種がでてきとるしな
もう人類は無理だろ
さよなら人類
0812デフォルトの名無しさん
垢版 |
2021/01/17(日) 17:25:02.12ID:/QJK4AMk
マジで終わりそうでコロナ怖い
0817デフォルトの名無しさん
垢版 |
2021/01/30(土) 08:40:50.47ID:PJvUkb6d
g++ (Rev6, Built by MSYS2 project) 10.2.0
Microsoft Windows [Version 10.0.18363.1316]
なんだけど、filesystem::hard_link_countが1しか返さないのはギャグ?

Microsoft(R) C/C++ Optimizing Compiler Version 19.28.29336 for x86
ちな、こいつはちゃんと2以上も返す
0818デフォルトの名無しさん
垢版 |
2021/02/10(水) 11:13:22.11ID:fLW5nkpk
MSYS2でアップデートしたらmintty周りの設定が飛んだみたい
もうWSL2にしろってことか
0819デフォルトの名無しさん
垢版 |
2021/02/25(木) 09:27:22.73ID:opz1PtTZ
int a [100];
for_each(par,a,a+100,[](auto){while(true);});

g++ a.cpp -std=c++17 -O3 -mavx512f -mtune=znver2
a.exe

resmonで見るとどうもシングルスレッド
のようなんだが、なんで?
ちな、vsだとちゃんとマルチで動く
0823デフォルトの名無しさん
垢版 |
2021/02/26(金) 21:22:38.26ID:P5cIP6RT
mingwとMSYSの使い分けがいまだによく分からん

MSYSのdllを使うコマンドか否か、みたいなのは分からなくはないが、
それはユーザが意識せにゃならんのかいなと

結局、エクスプローラのsendtoとかで別にあるLinuxサーバに送って、
TeraTermでそのディレクトリでシェルを起動して、grepとかawkとかってやっちゃうわ
0826デフォルトの名無しさん
垢版 |
2021/02/27(土) 11:46:46.02ID:ZfwkxC6h
>>823
MSYSはmingwを含む擬似Linux環境で、mingwはLinux(POSIXではないのかな)のAPI
ゲートウェイみたいな感じ?
Linux上と同じ結果になる補償は無いけどMSYSのバイナリは直接Windowsで動作する
ものなので、MSYSの「usr/bin」にパス通しておけば直接コマンドプロンプトで使えるけど
ダメかな?
0827デフォルトの名無しさん
垢版 |
2021/02/27(土) 13:11:19.55ID:o2ETenih
だからmingwは開発ツールで、gccとその仲間達
MSYSはPOSIX的なコンピュータ操作環境
0830デフォルトの名無しさん
垢版 |
2021/03/05(金) 20:16:57.84ID:WyYIPIbI
g++コンパイルが遅すぎ何とかして
0836デフォルトの名無しさん
垢版 |
2021/03/08(月) 12:52:15.63ID:kBU69stw
MSYS2 はネイティブ実行ファイルを作る開発環境で、
POSIX 互換レイヤはあくまでも開発環境 (GNU ツールチェインなど) を動かすための最小限度というのがコンセプト。
POSIX 互換の実行環境として全体の面倒をみる Cygwin とはコンセプトが違う。
(Cygwin でも posix 互換レイヤを通さない実行ファイルを作れはするけど基礎理念の話ね。)

MSYS2 をインストールしたときに

・ MSYS2 MinGW 32-bit
・ MSYS2 MinGW 64-bit
・ MSYS2 MSYS

の三種類の環境が用意されるけど、
MSYS2 MSYS は開発環境の保守として使うだけに留めて
普段の開発には MSYS2 MinGW を使うのが標準的な運用形態。

そういう理念を実現するにあたって結果としては msys-2.0.dll に依存するかどうかの差
になって現れるのは確かだけど、そこだけで区別すると意味わからんよ。
0841デフォルトの名無しさん
垢版 |
2021/03/22(月) 22:53:03.50ID:ybVyFf4F
minttyでおすすめのフォント設定を教えてください
メニューで出て来る選択肢の中で一番マシなEPSON 太丸ゴシック体Bで、今は誤魔化してます

$ mintty.exe --version
mintty 3.4.4 (x86_64-pc-msys)
c 2013/2020 Andy Koppe / Thomas Wolff
License GPLv3+: GNU GPL version 3 or later
There is no warranty, to the extent permitted by law.

という環境で、git for windows同梱のものをWindows 8.1 64bit上で使っています
0843デフォルトの名無しさん
垢版 |
2021/03/22(月) 23:56:47.08ID:0vVHIzCT
Font=欧文フォント
FontChoice=CJK:1
Font1=日本語フォント
みたいにして欧文と日本語で別のフォントを指定してる
0844デフォルトの名無しさん
垢版 |
2021/03/23(火) 00:28:54.24ID:jgiu4i3h
御教示ありがとうございました
.minttyrcでのFontChoiceの設定ふくめ、色々調整してみます
0845デフォルトの名無しさん
垢版 |
2021/03/23(火) 01:01:17.32ID:G0iN/IIq
個人的には VL Gothic だが、そういうのは好みの幅が大きいから意見を貰ってもあまり参考にはならなさそう。
0846デフォルトの名無しさん
垢版 |
2021/03/30(火) 02:32:27.70ID:kQ+Iabze
このスレを読んでいるとMinGWよりもWSLの方が高速だという話ですが本当でしょうか?
WSLは何となく遅そうなイメージがありましたが、あれはWindowsと同じレベルで動いているのですか?
0847デフォルトの名無しさん
垢版 |
2021/03/30(火) 02:52:22.86ID:AJYcji2D
>>846
WSL はあくまでも Linux が動いている。
Windows よりも速い部分もあれば遅い部分もある。

ただ、 Windows の側とのやりとりが発生する部分、
特にファイルの入出力にボトルネックがあるというのはよく指摘される部分だと思う。
I./O が多く発生するような場合には WSL は遅くなりがち。

それと、 WSL を使うということは Windows と Linux の両方が起動して
コンピューターの中に共存している状態。
単純にメモリ消費量が多い。
充分な物理メモリが載ってないときついということはあるかも。

単純に速いとか遅いとかとは評価できないので特性を理解してっていう話だし、
具体的な条件が決まっているなら測定してみるのがてっとりばやいよ。
0849デフォルトの名無しさん
垢版 |
2021/03/30(火) 08:00:17.76ID:A9lvR3CA
wsl2はlinuxが動いてるんだけどwslはABI互換でwindowsでlinuxのバイナリを動かしてる感じ
速度はなんとも言えない
なおcygwinはとにかくIOが遅い
0850デフォルトの名無しさん
垢版 |
2021/03/30(火) 13:59:25.50ID:rMZjDh6L
やることにもよるけどWSLが十分に機敏に動作する環境jなら、Linuxが動いている
だけのWSLの方が処理は早いことが多いかも
ただWSLは所詮Linux部分はLinuxでWindowsとは無関係に動いているような構造
なので、MinGWとかCygwinみたいにコマンドプロンプトとかでLinuxのコマンド使い
たいみたいなことは出来ないし、まだCUI部分しか動作しないとかも考えると
LinuxはWSlじゃなくてVMWareみたいなエミュレータの方が良いかなって思う
0851デフォルトの名無しさん
垢版 |
2021/03/30(火) 14:08:20.87ID:58d8d/13
でもwslってwindowsのexe動くからね
無理矢理感あって俺は好きだよ
まあ正確な動作ということならwsl2だよね
0852デフォルトの名無しさん
垢版 |
2021/04/18(日) 16:38:27.97ID:ZM4jma5X
うひょっ
0853デフォルトの名無しさん
垢版 |
2021/04/23(金) 23:47:56.17ID:hyXGjiN1
がーすー
0854デフォルトの名無しさん
垢版 |
2021/04/24(土) 06:19:36.43ID:7Pw5CUw8
WSL2 は、Microsoft が作っている、Linux カーネルを使うから、
毎月カーネルが自動更新されるので便利

Cent と同じで、無料サポートみたいなもの

Amazon Linux みたいなもの。
Amazonが自動更新する。
ユーザーがOS を管理しない、サーバーレス
0855デフォルトの名無しさん
垢版 |
2021/04/24(土) 12:35:18.00ID:h25BJ37h
なんかMinGWのダウンロードサイト死んでるように見えるんだけどこれってなんか理由あんの?
0858デフォルトの名無しさん
垢版 |
2021/05/05(水) 11:10:13.65ID:vI4aKPxv
ffmpegのコンパイルが24時間経っても終わらない前は2時間ぐらいで終わったのに
MinGWでGWが終わる
0863デフォルトの名無しさん
垢版 |
2021/06/14(月) 20:26:46.66ID:8ZmqHLEu
使ってるといつの間にかC:\msys64\mingw64\libとC:\msys64\usr\lib
に同じパッケ入っているのが、モヤッとする
0867デフォルトの名無しさん
垢版 |
2021/06/28(月) 17:01:09.02ID:F/0kPYVA
>>866
-gオプション自体がない
ざっと見た感じ同じような機能をもつオプションも見当たらなかった
0868デフォルトの名無しさん
垢版 |
2021/06/28(月) 17:10:44.85ID:+000hd27
gdbでデバッグする場合は、
gdb を起動。
「run コマンドライン」でターゲットをデバッグ起動。
止まったところで「backtrace」する。
「quit」で終了。

これで呼び出し履歴が取得できるぞ。
0871デフォルトの名無しさん
垢版 |
2021/07/02(金) 11:07:38.54ID:wGfEJWRL
msys2のpacmanが6.0.0になってからパッケージデータベースの
シグネチャファイルをダウンロードしなくなったな。
~.db.sigってやつ。
0873デフォルトの名無しさん
垢版 |
2021/07/27(火) 14:04:59.30ID:cZjH0t2V
Makefileからcmd.exeでバッチファイル動かす方法ある?
cmd -c hogehoge.bat じゃうまくいかない
0876デフォルトの名無しさん
垢版 |
2021/07/27(火) 16:04:27.73ID:Dog97Bpd
-k
0877デフォルトの名無しさん
垢版 |
2021/07/27(火) 16:53:55.98ID:x4yitIm8
漏れは、デスクトップにショートカットを作っているけど、そのリンク先は、
コマンドプロンプトを起動して、Ruby スクリプトを実行する

C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/Ruby/a.rb"

注意。書き込めないので、cmd@.exeと、間に@を入れました
0878デフォルトの名無しさん
垢版 |
2021/07/31(土) 13:56:23.14ID:t9HNV453
>>875
こういう感じ
D:\learn\make\bat>make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i686-pc-msys

D:\learn\make\bat>type makefile
all:
cmd -c test.bat

D:\learn\make\bat>type test.bat
echo %date% %time%

D:\learn\make\bat>make && echo meow
cmd -c test.bat
Microsoft Windows [Version 10.0.19041.1110]
(c) Microsoft Corporation. All rights reserved.

D:\learn\make\bat>exit
meow

D:\learn\make\bat>

ただcmd.exeが起動するだけでtest.batが動いてない
そしてcmd.exeが常駐するようで、これを手動でexitすると
&& の右側が実行されてにゃあと鳴く
0880デフォルトの名無しさん
垢版 |
2021/07/31(土) 14:38:37.39ID:t9HNV453
バージョン古いせいかなと思ってやってみたけど
D:\learn\make\bat>make --version
GNU Make 4.3
Built for x86_64-pc-msys
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>;
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

D:\learn\make\bat>make && echo meow
cmd -c test.bat
Microsoft Windows [Version 10.0.19041.1110]
(c) Microsoft Corporation. All rights reserved.

D:\learn\make\bat>exit
meow

D:\learn\make\bat>where make
c:\msys64\usr\bin\make.exe

D:\learn\make\bat>

どうやら症状は変わらないみたい
0882デフォルトの名無しさん
垢版 |
2021/07/31(土) 14:51:31.56ID:t9HNV453
お、できた!
makeって/を「ルート」と読んでしまうから-にしてたんだけど、まさかこれだったとは・・・

dx >>881
0883デフォルトの名無しさん
垢版 |
2021/07/31(土) 16:57:37.31ID:LRA0vGhm
な?
馬鹿だっただろ?
0889ハノン ◆QZaw55cn4c
垢版 |
2021/11/17(水) 04:07:51.95ID:Kdlo9yNJ
kmtar ははいっていますか?taz が使えて便利だったんですが…
0891デフォルトの名無しさん
垢版 |
2021/12/07(火) 02:19:31.74ID:lQSQ5VR9
msys2やcygwinはもう終わりだけど、linux上でmingw-64はwslの波に乗っただろう
wsl/gcc+wsl/mingw-64+win/mingw-64の3重コンパイルでクロス開発が捗る
0893デフォルトの名無しさん
垢版 |
2021/12/07(火) 05:40:52.07ID:6IfYS1Dr
開発環境がlinuxで、windowsポート考えるならベストチョイスじゃないの
というかそれしかなくね?

linux版がwin版ほどメンテされてないというのは確かに事実で、両OSのmingwで吐かれるwinバイナリが同じという保証は乏しい
wsl使えるなら両方試して齟齬がないか検証すべきでは
0895デフォルトの名無しさん
垢版 |
2021/12/07(火) 06:18:19.41ID:6IfYS1Dr
開発マシンがliunxでもwineみたいなwinエミュレータ使えばwin機なくてもテストは可能かもしれないけど
wineってかなり挙動不審だしな…

windows/wsl環境+mingw for linuxなら本物のwindows環境でテストが完結できるだろ
0896デフォルトの名無しさん
垢版 |
2021/12/12(日) 04:03:15.14ID:W0kKCLn+
MinGWのGCCやClangてなんかコンパイル遅い気がするんだけど
WSL上のlinuxだとちょっと早かったりする?
0897デフォルトの名無しさん
垢版 |
2022/09/02(金) 17:31:47.01ID:xfIuEZrx
https://github.com/zhlynn/zsign
これをビルドするのにMSYS2を入れて、git clone git@github.com:witwall/mman-win32とやったのですが、Permission deniedとなってしまいcloneできません。

MSYS2はmsys2-x86_64-20220603で以下のコマンドでコアとパッケージシステムを更新、インストールしています
pacman -Syu
pacman -Su
pacman -S base-devel
pacman -S msys2-devel
pacman -S mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
0901デフォルトの名無しさん
垢版 |
2022/09/04(日) 14:58:21.80ID:dy/AOC8s
>>899
過疎スレで誰も見てないなと思ってついやっちゃってごめんね
0903デフォルトの名無しさん
垢版 |
2022/09/04(日) 17:00:20.38ID:A8KVTWK8
>>900
このスレ以外のxxスレでも同じ質問しています
と全部のスレに描いて置くだけでもはるかにマシだと思うが
0905デフォルトの名無しさん
垢版 |
2022/09/05(月) 05:46:53.76ID:YC0Agv6v
>>903
どこのスレで聞く予定か決まってないとできないことだね
どっかのスレで聞いて有効回答が得られなかったから他をあたるときは無理
そこでもう諦めろという資格はあんたにはない

せっかく回答しても一言多い人はイヤミなやつと思われる
fjにもいたよ、やなやつ系の人
0908デフォルトの名無しさん
垢版 |
2022/09/05(月) 18:36:40.42ID:CjnDxYFq
> どこのスレで聞く予定か決まってないとできないことだね
> どっかのスレで聞いて有効回答が得られなかったから他をあたるときは無理
ここの「できない」「無理」を否定しているだけで、クロスじゃねえかどうかは関係ないよ。
0909デフォルトの名無しさん
垢版 |
2022/09/06(火) 06:32:16.53ID:8iFyZ+3k
自分が個人的に気に入らないってだけで
他人にああしろこうしろ言う図々しいやつ
0910デフォルトの名無しさん
垢版 |
2022/09/06(火) 09:15:35.13ID:9WMtC8UL
>>905
>どこのスレで聞く予定か決まってないとできないこと

ちなみにクロスもどこのスレで聞く予定か決まってないとできないことだぞ
0911デフォルトの名無しさん
垢版 |
2022/09/06(火) 10:05:14.92ID:8iFyZ+3k
マルチすんなというバグった骨董品に5chにクロスの機能がないのに無茶ぬかすなと指摘したんだよ
それへの返事()が>>903のような頓珍漢な内容だったんで
端っから破綻している話をおちょくっただけだが文句あんのか?
マニュアルトークばっかりで中身のないハリボテ野郎がw
0912デフォルトの名無しさん
垢版 |
2022/09/06(火) 12:50:52.33ID:QxRWO4Sk
>>902
./configure に、そんなオプションが存在しないのでは?

>No rule to make target 'config.mak'
「ffmpeg config.mak」などで検索すれば?
0913デフォルトの名無しさん
垢版 |
2022/09/06(火) 13:39:00.56ID:4u8//Iu5
opensslをビルドしたけど、これって成功してる?失敗してる?

make depend && make _build_sw
make[1]: Entering directory '/home/XXX/openssl'
make[1]: Leaving directory '/home/XXX/openssl'
make[1]: Entering directory '/home/XXX/openssl'
x86_64-w64-mingw32gcc -I. -Iinclude -Iapps/include -m64 -Wall -O3 -DL_ENDIAN -DOPENSSL_PIC -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib64/engines-3\"" -DMODULESDIR="\"/usr/local/lib64/ossl-modules\"" -DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN -D_MT -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -c -o apps/lib/libapps-lib-app_libctx.obj apps/lib/app_libctx.c
/bin/sh: line 1: x86_64-w64-mingw32gcc: command not found
make[1]: *** [Makefile:2624: apps/lib/libapps-lib-app_libctx.obj] Error 127
make[1]: Leaving directory '/home/XXX/openssl'
make: *** [Makefile:1554: build_sw] Error 2
0914デフォルトの名無しさん
垢版 |
2022/09/06(火) 14:04:07.58ID:M4FVZY7o
失敗している

直前に実行したコマンドが成功したかどうかは
$ echo $?
で確認する
0 が表示されれば成功
それ以外は失敗
0915デフォルトの名無しさん
垢版 |
2022/09/06(火) 14:06:57.11ID:M4FVZY7o
>>913
ちなみに原因は x86_64-w64-mingw32gcc を起動したこと
正しくは x86_64-w64-mingw32-gcc
prefixに指定すべきは
x86_64-w64-mingw32 ではなく
x86_64-w64-mingw32- ということだと推測される
0916デフォルトの名無しさん
垢版 |
2022/09/06(火) 16:17:14.54ID:QxRWO4Sk
>/bin/sh: line 1: x86_64-w64-mingw32gcc: command not found
そういうコマンドが存在しないのじゃ?

コマンドが存在すれば、
which python3
/usr/bin/python3

which x86_64-w64-mingw32gcc
と入力してみれば?
0917デフォルトの名無しさん
垢版 |
2022/10/06(木) 15:32:07.23ID:Ov6T9Uu9
opensslをビルドしようとすると
cc1.exe: fatal error: md2test.c: No such file or directory
compilation terminated.
make[1]: *** [<builtin>: md2test.o] Error 1
make[1]: Leaving directory '/home/hoge/openssl/test'
make: *** [Makefile:296: build_tests] Error 1
と出る・・・
0918デフォルトの名無しさん
垢版 |
2022/10/06(木) 15:33:01.61ID:Ov6T9Uu9
コマンドは以下の通り
cd /root/openssl
git checkout OpenSSL_1_0_2s
./Configure --cross-compile-prefix=x86_64-w64-mingw32- mingw64
0922デフォルトの名無しさん
垢版 |
2022/10/07(金) 15:18:33.31ID:2fSodFyt
どうもcheckout時にtest/md2test.cがなくなったっぽい
0923デフォルトの名無しさん
垢版 |
2022/10/08(土) 19:39:30.38ID:qxTVurIe
>>920
ほぼ同じことをやったけど、やっぱ>>917と同じ事が起きた
OpenSSL_1_0_2sでもtest/md2test.cがないとコケる
0924デフォルトの名無しさん
垢版 |
2022/10/08(土) 21:46:27.37ID:xDu3MKAN
If you want to just get on with it, do:

$ ./config
$ make
$ make test
$ make install

とINSTALLにあるけど
0925デフォルトの名無しさん
垢版 |
2022/10/09(日) 12:19:38.59ID:Tz+TsrJC
実はこれをビルドしてるんです
https://github.com/zhlynn/zsign/issues/158

>>924を参考に
cd openssl
git checkout OpenSSL_1_0_2s
./Configure --cross-compile-prefix=x86_64-w64-mingw32- mingw64
make
make test
とやったんだけど、やはりmd2test.c絡みエラーが出た
0927デフォルトの名無しさん
垢版 |
2022/10/09(日) 18:48:11.24ID:Pj/q53xX
INSTALL.W64

You will need Perl.
You will need Microsoft Platform SDK


To build for Win64/x64:

> perl Configure VC-WIN64A --prefix=c:\some\openssl\dir
> ms\do_win64a
> nmake -f ms\ntdll.mak
> cd out32dll
> ..\ms\test

とあるね
0929デフォルトの名無しさん
垢版 |
2022/10/10(月) 17:42:08.13ID:uEke22m0
linuxでビルドしてみたけどopenssl-OpenSSL_1_0_2-stableだとlibssl.soができないから失敗してるぽい
openssl-OpenSSL_1_1_1の方はmake testまで通った

$ @bash ~/build/openssl-OpenSSL_1_0_2-stable
$ find "." -type f | perl -ne '/libssl/ and print'
./libssl.pc
./libssl.a


$ @bash ~/build/openssl-OpenSSL_1_1_1q
$ find "." -type f | perl -ne '/libssl/ and print'
./util/libssl.num
./linux/libssl.map
./linux/libssl.pc
./linux/libssl.a
./linux/libssl.so.1.1
0930デフォルトの名無しさん
垢版 |
2022/10/20(木) 23:31:35.93ID:+6WDZGK8
msys2と違ってtdm-gccはgccのバージョンが選べる代わりに
更新がむちゃ遅いやんけ〜
多分、人手が足りないんやなぁ
0931デフォルトの名無しさん
垢版 |
2022/10/24(月) 16:47:31.17ID:VKX4Fsrh
gcc 自体にはバージョンを混在させる仕組みはある。
クロスコンパイル用の環境を構築したいとかよくあることだし。
MSYS2 でもできなくはないけど、
今だと Docker を使うとかしたほうが簡単なのかなぁ……。
0932デフォルトの名無しさん
垢版 |
2023/03/14(火) 10:13:05.30ID:nRxoL4vn
MSYS2 MinGW64 の環境でSDL2を使ってゲームを作っています。
作ったゲームは将来的には配布する予定です。
それでDLLを動的リンクにするためにパッケージに含めたいと思っています。

今のところ起動に必要なDLLが
libgcc_s_seh-1.dll
libstdc++-6.dll
libwinpthread-1.dll
他、SDL2のdll
です。

C++とpthreadのdllは何となくわかるのですがlibgcc_s_seh-1というのは何でしょうか?
MinGW固有のgccのdllですか?
0936デフォルトの名無しさん
垢版 |
2023/03/28(火) 17:22:29.83ID:hvNFNzxE
tdm-gcc良いんだがな
0937デフォルトの名無しさん
垢版 |
2023/03/30(木) 10:23:19.95ID:B7uoZJXZ
>>930
Mingw-builds じゃダメなのか?
俺も最初は TDM-GCC 使ってたけど、何時までも更新されないから Mingw-builds の 12.2.0 に乗り換えた
俺が使っている wxWidgets 3.2.2.1 も普通にビルドできたし、若干コンパイル速度も上がった気がする
(気のせいレベルかもしれませんが・・・)
0940デフォルトの名無しさん
垢版 |
2023/09/12(火) 12:30:45.63ID:QOX8wfhQ
それよりゲロ重いのが
0942デフォルトの名無しさん
垢版 |
2023/09/28(木) 10:21:45.74ID:7+/lnWbq
そういやswingを低速言うてるけど
JavaFXのほうが初期化しめちゃめちゃ時間かかってもっさりしてるんだけど…
そしてmacでは未だにスレッド競合解決してない
swnigよりオワコンな気がする
0943デフォルトの名無しさん
垢版 |
2023/10/10(火) 09:18:07.78ID:vCJOXgr3
スレチ
0944デフォルトの名無しさん
垢版 |
2023/12/24(日) 13:46:07.33ID:zZdFC2zj
質問です。

・ OS は windows10 で、最近 MinGW-w64 を導入した。
・ 下記の test.cpp ファイルに対して g++ -m64 -o test5 test.cpp と実行。

test.cpp
#include <stdio.h>
#include <stdint.h>
int main(){ printf("%d %x %zu", sizeof(long), sizeof(long), sizeof(long)); getchar(); return 0; }

・ 出力された test5.exe を実行してみると、なぜか「4 4 4」と表示されてしまい、
 「8」が1個もない。64ビット環境では、sizeof(long) は「8」なのでは?

・ test5.exe を右クリックして互換モードの欄を見てみると、
  Vista 以降のものしか表示されないので、
  ちゃんと64ビット版の実行ファイルになっている
  (他にも色々な確認方法があるが、いずれも64ビット版に合致する)。

・ それなのに「8」と表示されないのはなぜ?
0945はちみつ餃子 ◆8X2XSCHEME
垢版 |
2023/12/24(日) 15:28:23.49ID:SfA3xmSz
>>944
> 64ビット環境では、sizeof(long) は「8」なのでは?

単にその認識が誤り。
64ビット版の Windows の ABI では long は 4 バイトと規定してる。
https://learn.microsoft.com/ja-jp/cpp/build/x64-software-conventions?view=msvc-170#scalar-types

コンパイラが OS の規定に逆らって独自の仕様にしたってかまわないんだけど、
やりとりがややこしくなっちゃうだけで得なことはないからね。
レスを投稿する

レス数が900を超えています。1000を超えると表示できなくなるよ。

ニューススポーツなんでも実況