1 名前:デフォルトの名無しさん [2008/09/13(土) 00:38:02 ] Windows上で動作するフリーの開発環境 CygwinとMinGWに関する相談スレッドです。 過去スレ: cygwin + mingwn + gcc 相談室 Part3 pc11.2ch.net/test/read.cgi/tech/1177944767/ cygwin + mingwn + gcc 相談室 Part2 pc11.2ch.net/test/read.cgi/tech/1126103347/ cygwin + mingwn + gcc 相談室 pc8.2ch.net/test/read.cgi/tech/1058134693/ 関連サイト: Cygwin www.cygwin.com/ MinGW www.mingw.org/ 関連スレッド: GCCについて part8 pc11.2ch.net/test/read.cgi/tech/1192201659/ 【激遅】AppleGCC【絶望】 pc11.2ch.net/test/read.cgi/tech/1173267844/
208 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 19:21:36 ] 1年前のJava6u10でこのくらい。まだ先は長い。 ttp://d.hatena.ne.jp/kkawa/20080330/p1
209 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 20:05:47 ] >>207 MinGWはあくまでビルド環境でしかないよ 俺は基本VC++EEで管理&コーディングして、ビルドはどちらでもできるようにしてる どちらにしろリソースエディタは別に必要だし
210 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 21:31:14 ] レイトレなんて生成終了までAPIなんてほぼ関係なくて、ひたすら演算だけじゃん 環境依存部分をネイティブで個別実装するのがいいとか、きちg(ry なんか、レイトレ→3DCG→DirectXとか思ってそう あとGPGPUでレイトレすればいいって環境を選びすぎるし、 もしレイトレの学習が目的なら、不純物が増えて意味ないだろ これは……釣られたのか!?
211 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 22:08:18 ] ジャバと書いてるだけで正直胡散臭いし 長文な上に、どの主張も「だと思うんだけどなあ」「じゃない?」とか 曖昧な表現で逃げてる時点で、な
212 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 22:08:42 ] 演算の途中経過とかをリアルタイムに見たいんじゃないの? 標準的な画像や動画フォーマットに出せばAPIはいらんよなぁ,確かに
213 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 01:19:53 ] >>208 コウスケちゃんのブログなんてあったんだw さすがに日本人ハッカーだね
214 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 01:28:20 ] >>210 >なんか、レイトレ→3DCG→DirectXとか思ってそう この流れは3Dであってレンダリングと関係ないと思うんだが。 DirectXを未だにゲーム用のAPIとか考えちゃってるの? ひたすら演算だけでネイティブに依存する必要がないなら、ジャヴァとかC#でいいんでない? なのにどうしてこだわるんだろう。どうせスピードを求める君のポリシー(笑)なんだろうけど。
215 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 01:44:31 ] なんで演算メインでJavaやC#使うんだよ?バカなの?死ぬの?
216 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:24:01 ] ちょっと待て、偽者が混じって楽しんでるだろ、おいw
217 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 09:17:22 ] その前に本物ってどれ? 246みたいなのは本気で言ってるの? なんでこんなのがtech板に居るの?
218 名前:デフォルトの名無しさん [2009/02/22(日) 09:45:52 ] コンパイラぐらい金出して買えよ いつまでもオープンソースにいると髪の毛なくなっちゃうぞ
219 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 11:10:04 ] >>246 がどんなことをマジで言うのか期待
220 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:19:20 ] >>219 何言ってんの???
221 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:44:03 ] 少しは考える力をつけろ。
222 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 14:09:21 ] >>218 オープンソースと髪の毛は関係性が薄い ツーカ、オプソ界にいるやつはみんなフッサールだ 問題なのはヒゲ
223 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 15:55:33 ] >>218 オープンソース以下のコンパイラが多すぎるからなあ
224 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 04:58:13 ] オープンソースのコンパイラは実質GCCのみじゃないの?何と比べてるかわからんが、糞はお前w
225 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 06:37:55 ] オープンソースなコンパイラはそれなりにあるが、 実質gccのスレなので、gccと仮定しても、クソという 理由が見いだせない。この意味不明な論理展開を行う >>224 には、VIPがお似合いだろう。これは224の 書き込み時間からも、容易に想定可能である。
226 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 07:09:15 ] >>225 はいはい。能書きはそれぐらいにして早いところVIP板へ行ってくらはい
227 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 07:59:06 ] 結局なんの説明も出来ない無職か
228 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 08:05:03 ] >>224 って>>218 ? まずはgccより高機能な市販コンパイラを出して貰いたい
229 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 08:33:24 ] cygwinってCPU強化したら速くなんの? configureが遅すぎて泣ける
230 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 08:42:41 ] 手持ちのCentOS4やUbuntuと、大差ない気がしたんだけど、 大きなファイルなら差が出るのかな。差があるとしたら I/Oまわりだろうねえ
231 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 23:21:31 ] >229 configure が遅い理由は cygwin 特有のプロセス起動とファイル I/O にかかる種々の変換だとか前処理の コストだと思うんで、速くはなるだろう。
232 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:27:11 ] cygwinのファイルI/Oは遅いよ。ストリームI/Oをバッファ入出力の段階でシミュレートするのではなく 関数レベルでシミュレートしているようで、fgetc()をループで回すだけでも結構差が出る。 >>228 iccは高性能だけど、高機能と言うのはどういう尺度? gccを否定する気はさらさらないけれど、最近のx86系CPUを使いこなすには力不足なのは否めない。
233 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 13:04:58 ] msysをつかえばいいじゃない。 大概のことはmsysでカタがつくでしょ。
234 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 13:10:53 ] msysはメモリーリークが酷いから嫌
235 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:02:34 ] >>234 kwsk
236 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:06:45 ] >>234 がお漏らしプログラム作ってるだけっていう落ち
237 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:21:24 ] リークと違うけど、Qt4コンパイルしてて、なんのエラーも 出てないのに、mingw32-makeがエラーで止まる事ならあった。 Dwarf2でbuildしたgcc4.3.3が原因の可能性も高いが。 ああ、msys全然関係無かったねw
238 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 21:53:46 ] Qt4はメモリ4Gあろうがページファイル1G以上用意しないと確実にこけるね
239 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:00:40 ] MSYS+MinGWでMKVtoolnixコンパイルしてて、動くバイナリはできんたんだけどちょっと気になってることがある。 公式で配布されてるバイナリにはregex2.dllがあるけど、自分のにはない。 何かのライブラリがスタティックリンクになってるんだろうけどどれかわからない。 名前からして正規表現だろうからboostかと思ったけどlink=sharedにしてコンパイルしてもそんなdllない。 何のライブラリか教えてください。
240 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 05:04:14 ] glibc gnuwin32.sourceforge.net/packages/regex.htm
241 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 11:27:42 ] APIを使わないDLL遅延バインドのやり方がわからん。
242 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:42:21 ] >>240 d でもこれ突っ込んでもやっぱりregex2.dllは使われないな。何でだろう…
243 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 21:25:45 ] >>241 なぜAPIを使うのがいやなの?
244 名前:239 mailto:sage [2009/03/02(月) 01:36:26 ] 公式のバイナリをDependency Walkerで調べてやっとわかった。 libmagicの依存ファイルだったのか。 libmagicはうまくコンパイルできなかったらバイナリ取ってきてたからそのせいか。
245 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 18:41:39 ] ちょっと前に 「gccの4.x.x系は3.4.5よりもWindows環境への対応が悪い」 と聞いんだが、未だに悪いの? 俺が興味あるのはg++だけだが、g++に限ってもそう?。
246 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 05:19:57 ] 何をして対応が悪いといっているのか不明なのでなんとも・・・
247 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 11:34:41 ] MinGW sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963&release_id=46827 ここから src 以外の tar を全部ダウンロードしたんでしけど、 解凍したら同じ名前のファイルが重複しているんです。 たとえば bin/bash.exe なら bash-3.1-MSYS-1.0.11-1.tar.bz2 bash.exe 607,744 バイト msysCORE-1.0.11-20080826.tar.gz bash.exe 911,646 バイト の両方に入っています。 いったいどちらの bash.exe を取ればいいのでしょう? ほかにも tar.exe などなど、重複がいっぱいあります。 どれを入れればいいんですか? ヒヨコのオスメスみたいに、ひとつひとつ手作業で選別せにゃいかんのですか?
248 名前:デフォルトの名無しさん [2009/03/06(金) 11:46:55 ] バージョン1.0.11 と バージョン1.0.11-1 のサイズが違うと何か問題ある?
249 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 12:33:53 ] 知らないならレスしないでください
250 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 13:32:28 ] だから、リリースバージョンが違うものなんだから、中身が違って当然だろうが。 これで意味が通じなかったら、Technological Previewバージョンを各ソフトごとにとってくるなんてやめて、 おとなしく安定バージョンをパッケージで入れろ。
251 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 13:35:06 ] だから知らないならレスしないでください
252 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 13:35:57 ] ほかに誰か知ってる人はいませんか?
253 名前:デフォルトの名無しさん [2009/03/06(金) 14:06:09 ] >>251 , 252 くだらない悪ふざけはν速にでも行ってやれや。
254 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:32:21 ] 質問: どちらが新しいんですか? 答え: サイズが違うと何か問題ある? 頭おかしいの?
255 名前:デフォルトの名無しさん [2009/03/06(金) 15:45:13 ] だから、リリースバージョンの見方もわからんバカは 安定版のパッケージを入れろよ。 バージョンわからん奴がTechnological Previewをいれて何の役に立つんだよ。
256 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:18:23 ] >>254 とっとと失せろ、ゴミクズ
257 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 17:47:47 ] ニートタイムに喚くなよ 見苦しいな
258 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:21:19 ] で? けっきょく、どれが新しいかわからないんだろ? 知らないならレスすんなよ。 あんたに質問したんじゃねーーーーーーーよw
259 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:01:39 ] ファイルの日付も読めない奴に使える訳もないな
260 名前:デフォルトの名無しさん [2009/03/06(金) 19:39:43 ] >>258 瞬時にリリースバージョンくらいわかりますが、何か? バージョンを読みとってるからこそ>>248 なのだが。 お前は、自分が書いたものと248をみてもまだ理解できないわけだろ? だから>>250 の安定版を入れろと言うことなんだが。 Technological Previewってのは人柱用なんだぜ。 なぜあえてこれを入れたいんだ? バカだからか?
261 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 20:21:43 ] わかったわかった。俺が悪かった。ここはひとつ、俺がオトナになろう。 で、リリースバージョンの見方をおしえてください。おねがいします。
262 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 20:23:22 ] 事情を説明いたしますと、 安定版が安定しないから、試しに全部新しいのにしてみようと思っただけです。 それで安定するか、しないか、検証してみるだけです。 「問題の切り分け」 を死体のです。
263 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 20:33:45 ] >>261 逆に煽り返されたりして、出来もしないくせに下手なことしないほうがいいよなぁ
264 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 20:46:50 ] >>262 おとなしくVC++いっとけ
265 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 20:55:24 ] ぜんぶ 1.0.11 なので、どれが新しいのかわかりません。 でも確実に、中身が違うんです。
266 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:03:19 ] すこし分かりかけてきた 1.0.11-1 1.0.11-20080826 これのどっちが新しいか。それさえ分かれば・・・ 1 と 20080826 って、どっちが新しいんですか?
267 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:14:49 ] なんか迷宮に迷い込んでいるような気がするなぁ・・・ 問題の切り分けをするのであれば、安定版のどの部分が安定 しないのか切り分けるのが先では無いだろうか。 全部最新版に差し替えて安定したところで、どの部分が問題 だったかは結局分からないのでは。
268 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:20:20 ] パッケージとバラを同じ項目においておきながら、 バラの方が古いなんてアホな管理をするやつがいるとも思えんが。
269 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 23:37:06 ] つーかさ、不安定があるのなら、どういう不安定なのか書けよな〜 他のユーザーのためにもなる。
270 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:07:40 ] 俺は MSYS のデバッグしてんじゃねぇぞ。 どの部分が問題だったかは結局分からなくても 安定して使えさえすればOKなんだよ。
271 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:43:26 ] >>270 だからよぉ、他人にもどう不安定か情報出せよ。 自分だけ情報を得られたらそれで桶かよ。 マサにカスだな
272 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:46:02 ] >>270 問題の切り分けをしたいとか言いながらちゃぶ台ひっくり返すし、 ここまでMSYSが問題なんだとは一言も話をしていないし、 しかも大人のふりしたと思ったらまた退行しているし。
273 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:34:15 ] >>271-272 ゴミの相手するなよ
274 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:48:09 ] 新しいのと古いのと見分け方を聞きたかっただけなんだが・・・
275 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:48:41 ] もったいぶらずに教エロ
276 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 11:16:12 ] もったいぶらずに着エロ ttp://blog-imgs-27.fc2.com/a/p/p/appetite/20050216122706.jpg
277 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:50:19 ] >>276 ありがとうございます。おかげさまで解ケツしました。
278 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:53:09 ] g++ってワイド文字列環境はまともになってる? g++ (GCC) 3.4.5だと、 std::wcoutって何だか分かりません見たことも聞いたこともありません 的なコンパイルエラーがでちゃうんだよね。
279 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 01:43:37 ] >>278 今は無理。まともにサポートできる見通しが立たないから宣言自体が無効化されてる。 今公開テスト中の Cygwin 1.7 には wchar_t 関連の C 標準関数がひととおり実装されてるんで、 その上で動く g++ なら使えるようになるかもしれない。
280 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 03:23:49 ] >>278 この4.3.3使え ttp://www.tdragon.net/
281 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 08:30:19 ] そもそも何でMinGWって最新のGCCを同梱してないの? >>279 ふーん、まだダメダメなのか。残念だ。 >>280 TDM/MinGW Installer 1.902.0 Released 2009-02-28 Bundled Installer: [tdm-mingw-1.902.0-f1.exe] (23.8 MB) Includes C and C++ SJLJ packages from GCC 4.3.3 TDM-1, plus binutils (2.19.1), mingw-runtime (3.15.2), w32api (3.13), mingw32-make (3.81-20080326-3) and gdb (6.8-mingw-3). ってやつか?すげぇなコレ。 いわゆる人柱版ってことかな?
282 名前:デフォルトの名無しさん [2009/03/14(土) 17:36:13 ] UNIX/Linux初心者です。 会社でfork/FIFOを使用した開発をやっていて家でもお勉強できるようにとCygwinインストールしました。 でもうまく動いてくれません。chi 3-25で、Device or resource busyが発生します。 Cygwinの仕様でしょうか? // プロセス作成 p = fork(); if(p == -1) exit(1); if(p > 0) { sprintf(fname_p, "%s-%d-%d", FIFO, p,1); } if (p == 0) { p = getpid(); //子側FIFO名前 sprintf(fname_c, "%s-%d-%d", FIFO, p,1); //親側FIFOのメーク待ち while(1){ if(access(fname_c, F_OK) == 0) break; sleep(1); } //読み込みパイプ開 fifo_cr = open(fname_c, O_RDONLY); if(fifo_cr == -1){ printf("chi 3-25 error open fifo\n",fname_c); err_no = errno; perror("err_no"); exit(6); } 省略
283 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:40:21 ] >282 質問の答えじゃないが、fork するんなら pipe(2) 使えばループで待つ必要もないんじゃないの?
284 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:52:06 ] >>282 質問の答えじゃないが printf("chi 3-25 error open fifo\n",fname_c); err_no = errno; これはダメだろう常識的に
285 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 11:38:28 ] 質問の答えじゃないが、popen()で事は足りないのかな?
286 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 07:03:44 ] ファイルを先頭から順次読み込むプログラムで, 以下のようなものを書いたのですが,ファイルの途中なのにもかかわらずループを抜けてしまいます. (どうも0x1Aを読み込んだときにbreakがかかるようです.) for ( ; ; ){ c = fgetc(fp); if (c == EOF) break; /* 省略 */ } Linux上のgcc(2.95.3)でコンパイルした場合は正常に動くのですが, MinGW(5.1.4)だと前述したように,正常に動きません.(fgetcの仕様が違うのでしょうか) とてもくだらない質問に思えて恐縮なのですが,解る方がいたら教えてください.
287 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 07:55:26 ] fopenでtext modeでファイルを開くと、0x1aをEOF(=CP/Mの)と見なすから。 www.google.co.jp/search?q=fopen+EOF+0x1a
288 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 07:56:24 ] mingwのライブラリはVC仕様なので バイナリモードで開いてみては fp = fopen( path, "rb" ); // こんな感じ? # たしか Windows/DOS ではテキストモードで開くと 0x1a を # EOF として扱う仕様だったような気がする # unixはテキストモードはなし
289 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 08:33:39 ] >>287-288 素早い返答ありがとうございます. ご指摘のとおり,fopenのモード指定の問題でした. VC系だとテキスト/バイナリの区別がある,というのを初めて知りました. googleにもスバリ書いてあることだったようで,お恥ずかしい限りです.
290 名前:デフォルトの名無しさん [2009/03/22(日) 23:13:40 ] CygWinでgprofかけても時間情報が取れないのですがどうすればプロファイル取れる でしょうか。 g++のコードのプロファイルが取れる方法よろしくです。gprofて最近は使われてない?
291 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 05:44:56 ] gccのバージョンによって、gmonのフォーマットが途中で変わってるので、 gccかgprofのバージョンを変えてみると良いらしい。MinGWもgcc3.4.5と 手元のgprofとの組み合わせではダメで、gcc4.3.2や4.3.3では取れるなあ。 これは古いgprofを試さないといけないのかな。
292 名前:デフォルトの名無しさん [2009/03/25(水) 21:09:34 ] >>291 CygWin/g++でgprof以外にプロファイル取るすべあるでししょうか? 最近の人はどうやってプロファイル取ってるの?
293 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 22:50:40 ] >>291 横レスだけど情報ありがとう。 古い MinGW の gcc 3.2.3 + gprof 2.13.90 だと OK で 比較的新しい gcc 3.4.5 + gprof 2.18.50 だと NG なんで困っていた。 MinGW の binutils-2.18.50 にはバグがあって gprof が正常に動作しないらしい。 www.nabble.com/gprof-time-accumulation-problem-td19125108.html binutils-2.17.50 だと問題ないということなのでダウングレードして gcc 3.4.5 と一緒に試したところ、正しく統計情報が取れるようになった。
294 名前:291 mailto:sage [2009/03/26(木) 00:45:20 ] すっかり忘れてたけど、次の日動かしてみたら、MinGW 3.4.5とgprof 2.19、2.19.1での動作を確認した。 だから前回書いたことは、全くの見当違いでgprof 2.18.50だけの問題みたい。ごめんね >>292 おそらくだけど、プロファイラ自体を使ってる人が少なく、使ってる人も自前で gprofをbuildか、バージョンダウンしてる。
295 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 07:02:43 ] まあ、わざわざMinGWでgprof使おうと思う人は少ないだろうなぁ。
296 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:07:23 ] cygwin/mingwがターゲットになることは少ないので、gprofするのはLinux上になることが多いなぁ。私のところでは。
297 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 03:34:28 ] test
298 名前:デフォルトの名無しさん [2009/04/03(金) 07:16:03 ] 質問です。PC-98のMS-DOS上でDJGPPとNASMとBorland C++ 3.1Jでプログラムを 組んでますが、たとえばHello, World!を作ってもDJGPP(GCC v4.3.2)では異常に 実行ファイルのサイズが肥大化します。動作もBCCでコンパイルしたものより 重いです。 DJGPPのFAQによると、「DJGPP(DOS版GCC)はメモリモデルにflatを用いており、 プロテクトモードで4GBまでのメモリを扱えるようにしています」とのことなんですが、 これが原因ですか?ちなみにHELLO.EXEを実行するにしても、DPMIサーバ(cwsdpmi.exe)が 必要という糞仕様です。開発マシンはPC-9801DA2(80386 20MHz + Cyrix 387コプロ; RAM 13.6MB; SCSI HDD 4.3GB; 緑電子SCSI-2ボード; NEC版MS-DOS 6.2)です。 HELLO.EXEのファイルサイズとコンパイル時間は BCC = 6.6KB ; コンパイル時間 = 5秒 DJGPP = 44KB ; コンパイル時間 = 2分近く NASM = 22Bytes ; コンパイル時間 = 3秒 (コンパイルオプションは、 A:\>bcc -ms -O2 hello.c A:\>gcc -Wall -O2 -s -fomit-frame-pointer -o hello.exe hello.c A:\>nasm -fbin -o hello.com hello.asm です) 異常な事態です。これはDJGPP(GCC)の仕様なんでしょうか!ご教示ください。 ちなみに同機能をDOSファンクションコールAH=09Hでフルアッセンブル実装した HELLO.COMはわずか22バイトですOrz K6-2 550MHz/64MB/18GBのX-Mateがあるんですが、 それでやっても処理系の差異は変わらないですよね?
299 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 07:20:27 ] 16bitコンパイラと32bitコンパイラで比較して何がしたいの?
300 名前:298 mailto:sage [2009/04/03(金) 07:26:38 ] × X-Mate ○ X-MATE どうしてもDJGPP(GCC4.3.2)だと44KB近くなってしまうようで、 三秒のウェイトを置くdelay機能も、GCCとBCCで同等のものがありますが、 BCC版は8KB程度、GCC版は48KBほどになり、気違いじみています。 やはりDOSファンクションコール AH=2CHでフルアッセンブル実装した DELAY3K.COMは、ファイルサイズが22バイトでCPU負担も全くありません (HELLO.COMは28バイトでしたすいません)。 Borland C++ v3.1Jは中古でオクで競って7千円で買ったので製品とはこういうものだと いわれればそれまでですが、ちゃんとstripもしてるのに、これ以上はGCCは無理ですか!?
301 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 07:39:15 ] たぶんこのスレにそんなマニアックなケース答えられる人はいないんじゃないかと。
302 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 07:59:25 ] DPMIはDOSエクステンダの下請けに過ぎず DJGPPのリンカはDOSエクステンダに相当するものをスタブとして取り込んでいるから出力ファイルが大きくなる
303 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 08:08:37 ] go32.exeが組込まれるんだっけ
304 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 08:09:50 ] 他にも即値やディスプレースメントが32bitで大きくなったり、アラインメントが32bitになったりで いくらでも16bitコードより大きくなる要素はある
305 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 08:18:41 ] んなもん、gccのバイナリがデカのは今も昔も変わらん。 go32とか関係なく vcとMingw gccではやはりバイナリサイズが全然違う。
306 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 10:13:49 ] >>298 そんな過去の鈍足PCを今のPCと較べても、全く意味がありません。 それとも、クロック周波数の20MHzという意味が理解できませんか? いずれにしても、鼬害です。レトロPC板にでもお帰りください。
307 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 10:25:40 ] 298 みたいな時空を超えた書き込みを 太鼓腹のオッサンがシコシコ打ちこんでると思うとキモイな
308 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 10:41:15 ] 同族嫌悪というやつですか?