元スレCygwin + MinGW + GCC 相談室 Part 4
gcc覧 / PC版 /みんなの評価 : ☆
651 = :
INCLUDE_PATHにlibのpathって入れるんだっけ
654 = :
友達がプログラミング勉強したいっていってるんだけどやっぱ
進める環境としてはdev c++ とmingwがいいかな
656 = :
>>654
単にプログラミングの勉強ならば、
WindowsでVisualBasicが面倒なくて鉄板でしょ。
Unixの世界は、環境構築とツールの使用法の習得だけで
挫折する人がいるくらいのカオスな世界だから、
できれば知らない方が幸せよ。
657 = :
>>656
> 単にプログラミングの勉強
変ったジャンルですね。
658 = :
>>656
僕的にはdev c++のほうがインストールが早いし、設定、認証が要らないから
こっちのほうが簡単だと思うんですけどね。やっぱVCとかVBですかね
659 = :
Dev-C++はTDM-MinGWと組み合わせて俺もインストールしてあるけど
何と言ってもメニューが全部英語なのと、gccそのものがオプションが複雑で
決して初心者向けではないという事情を考えてVCを推している
でも自分でその壁を乗り越えられる人であればgccの方が標準準拠度は
高い
662 = :
>>659
日本語化されたのが、確か2つくらいあったはず。sけいし氏のヤツは割りと有名
かと思ってたんだがそうでもないのか。
一時VC2003と交互で使ってたけど、x64環境に移行してからはVC2008しかt
これ以上はスレチだな。
663 = :
Dev-c++ と一緒に入ってくる gcc3.4.2 を
TDM-MinGW gcc4.4.1 に入れ替えたのですが、
gcc3.4.2
・iostreamをincludeするだけで、EXIT_SUCCESSマクロもatof()関数も使用できた
・iostreamをincludeするだけで、clock()関数が使用できた
gcc4.4.1
・cstdlibをincludeしないと、EXIT_SUCCESSマクロもatof()も使用できない
・ctimeをincludeしないと、clock()関数が使用できない
という挙動になります。
どっちが正しいんですか?
664 = :
>>663
4.4.1 の方がより規格に沿っていると言える。
665 = :
MinGWで日本語を表示するにはどうすればいいんですかー?(>_<)
666 = :
>>665
-finput-charset=cp932 -fexec-charset=cp932
をコンパイル時に付ける
するとEUCに変換してからコンパイルしてくれるのでダメ文字の問題は起きない
668 = :
>>666
それ、本家MinGWのgcc4系だと効かない。cc1.exe、cc1plus.exeにやlibiconvがリンクされてないんだそうだ。
gcc3.4.5のcc1とcc1plusで上書きすればOKという情報もあるけど、俺のところじゃダメだった。
TDM's MinGW gcc4.4.1なら大丈夫。
>>667
もちろんそれでもOK。ただ、これまでに書きためた大量のSHIFT_JISのソースを使ったり、
3rd Partyのヘッダーファイル(例えば何等かのIOボードにボードに付いてくるライブラリの
ヘッダーファイル)を使ったり、他のコンパイラと共用するソースファイルを使ったり
する場合にはそうも行かない場合もある。
670 = :
>>668
Windowsのシステムロケールを日本語から英語に変更するといい
671 = :
>>668
既にバイナリの gcc 4 がある状況なら
gcc 4 をビルドするのはたやすい。
libiconv 有効にしてビルドしれ
673 = :
>>672
インストーラが 4.4.0 を入れないのは怠慢ではなくて、そういう選択をしたのだと思う。
まだ実績が不充分ってこともあるし、互換性の問題もある。
エンドユーザーにはなるべく枯れたバージョンを提供する方がいいという考え方はあり得る。
libiconv のリンクも、世界全体から見れば案外少ない状況でしか必要としないし、
そもそもソースコードにマルチバイト文字列をハードコーディングするのは悪いスタイルだよ。
674 = :
よがりごえ
675 = :
>>673
本家擁護も結構だが、
> インストーラが 4.4.0 を入れないのは怠慢ではなくて、そういう選択をしたのだと思う。
> まだ実績が不充分ってこともあるし、互換性の問題もある。
そんなに4.4.0に不安があるのなら、gccだけ独立して正式リリースにしなければいいのに。
そもそも本家はgcc3系とgcc4系でバイナリの互換性がなくなってしまった。
ディレクトリ構成も大きく変更してしまった。
これって良いことなのか?
> エンドユーザーにはなるべく枯れたバージョンを提供する方がいいという考え方はあり得る。
エンドユーザーが自分で選択できるようにすればよいだけの話し。
> libiconv のリンクも、世界全体から見れば案外少ない状況でしか必要としないし、
そう。そういう少数派への配慮が足りない所が問題。
> そもそもソースコードにマルチバイト文字列をハードコーディングするのは悪いスタイルだよ。
余計なお世話。そんなのは状況次第。
日本人の工場オペレーターしか使わないことがわかっているソフトだったら。
ハードコーディングしてしまった方が、短い工数で作れる。
多国語対応する必要があるソフトなら、リソースDLL使うとか、独自のライブラリで言語設定に
あわせてファイルから文字列を読込むとかしてる。
676 = :
>>675
> そんなに4.4.0に不安があるのなら、gccだけ独立して正式リリースにしなければいいのに。
> エンドユーザーが自分で選択できるようにすればよいだけの話し。
大半のユーザーはとりあえずバージョンナンバーが大きい方を選択してしまうよ。
エンドユーザーってのはそんなもんだろうが。
> そもそも本家はgcc3系とgcc4系でバイナリの互換性がなくなってしまった。
> ディレクトリ構成も大きく変更してしまった。
バイナリ互換性が維持されればそれに越したことはないんだけど、
これは根本的な設計から大幅に変わってしまったので、仕方ないとしか…
> そう。そういう少数派への配慮が足りない所が問題。
> 余計なお世話。そんなのは状況次第。
配慮したらその分だけファイルサイズも増える。
少数派に配慮したら多数派に多少なりとも不便を強いるじゃないか。
ファイルサイズ程度なら些細な問題だけど、依存ライブラリが増えると管理が面倒なんじゃね?
これは開発リソースの割り振りの問題だろう。
それに意見する方が余計なお世話ってもんだろ。
開発状況は libiconv をリンクしたくない状況だったんだろ。
677 = :
>>676
> 大半のユーザーはとりあえずバージョンナンバーが大きい方を選択してしまうよ。
> エンドユーザーってのはそんなもんだろうが。
何が言いたいのかわからん、俺には>>673に書いてあることと矛盾してるようにしか
受け取れない。悪いがちゃんと説明してくれないか?
> バイナリ互換性が維持されればそれに越したことはないんだけど、
> これは根本的な設計から大幅に変わってしまったので、仕方ないとしか…
TDM版gcc4.4.1は本家のgcc3.4.5とバイナリレベルの互換性を保ってるよ。
> これは開発リソースの割り振りの問題だろう。
> それに意見する方が余計なお世話ってもんだろ。
> 開発状況は libiconv をリンクしたくない状況だったんだろ。
ファイルサイズの話はかなり無理矢理感があるなあぁ。
で。本家のgcc4.4.0の説明書き(gcc-4.4.0-mingw32-notes.txt)には、必要ファイルだけ
分割してダウンロードする場合、
> libiconv Runtime [REQUIRED]
> libiconv-1.13-mingw32-dll-2.tar.gz
と書いてあるんだが(つまり必須と言うこと)。リンクを怠ったか、ドキュメントの修正を
怠ったかのどっちかだとしか思えない。どっちみち瑕疵であることに変わりはない。
で、TDM氏のHPには、
> TDM-GCC is not formally affiliated with or endorsed by the MinGW project
> (although several MinGW team members make use of it)
なんて書いてある。それなら性格がきっちりしていそうなTDM氏に本家のチームに
加わってもらえば、もっと良くなると思うんだが...
678 = :
>>677
> 何が言いたいのかわからん、俺には>>673に書いてあることと矛盾してるようにしか
> 受け取れない。悪いがちゃんと説明してくれないか?
問題点を認識せずにとりあえず最新版を入れてしまうユーザーもいるから
インストーラは 4 を選ばせないようにしたんじゃね? と言いたかった。
> TDM版 gcc4.4.1 は本家のgcc3.4.5とバイナリレベルの互換性を保ってるよ。
んなわけねーだろ。 何が出来ることをもってバイナリ互換性って呼んでるの?
> ファイルサイズの話はかなり無理矢理感があるなあぁ。
そりゃそーだ。 だから些細なことって書いてるだろ。
結論は開発リソースの割り振りだ。
どっかには問題が残ることもあるだろうさ。
リソースは有限だし、どの問題をどこまで解決するか、
時には手抜きするのもひとつの選択だということだ。
TDM 版だって致命的な問題があったものを警告を書くだけで出したわけだろう?
本家じゃやっちゃいけないことだけど、 TDM 版はそれでも出すという選択をしたわけだ。
一応誤解が無いようにいっとくけど、俺は本家を擁護したいわけじゃないよ。
どこを重要視するかが違うだけのことであって、どっちが良いとか言えるものじゃないというのが俺の主張。
もちろん、本家がよりよくなってくれるのが最も望ましい。
679 = :
>>678
> 問題点を認識せずにとりあえず最新版を入れてしまうユーザーもいるから
> インストーラは 4 を選ばせないようにしたんじゃね? と言いたかった。
了解。ただ、インストーラーでgcc3.4.5をインストールした後でgcc4を入れようと思うと簡単じゃない
(ディレクトリ構成が変わっているから戸惑う)。そういう点で問題だと俺は言いたい。
> んなわけねーだろ。 何が出来ることをもってバイナリ互換性って呼んでるの?
GUIツールキットQt 4.5のMinGW用のバイナリインストーラーでインストールされるライブラリは本家の
gcc3.4.5でビルドされたものだが、TDM gcc4.4.1でビルドしたアプリからちゃんと使えた。
ところがQt 4.6のbeta-1には、本家のgcc3.4.5でビルドされたライブラリの他に、本家のgcc4.4.0(Qtライブラリ
ではなくてコンパイラそのもの)もバンドルされてきた。ところがこの4.4.0でアプリをビルドすると、エラーが
出てしまう(3.4.5でビルドされたライブラリと互換性がない)。
Qt 4.6 RCになって、ライブラリも本家のgcc4.4.0でビルドされたものに変わった。そうしたら今度はアプリを
TDM gcc4.4.1でビルドするとエラーが出る。仕方なくQt 4.6 RCのソースからTDM gcc4.4.1でQtをビルドしたら
うまく行った。これでわかるだろ?
> TDM 版だって致命的な問題があったものを警告を書くだけで出したわけだろう?
> 本家じゃやっちゃいけないことだけど、 TDM 版はそれでも出すという選択をしたわけだ。
出した後から発覚したんで、緊急で警告を書いたんだよ。だから「修正するまで、一つ前の4.3.3を使ってくれ」
って書いてあった。テストが足りなかったのは確かだが、やるべきことを迅速にやっている。
本家はlibiconvがリンクされていなくても、アナウンス一つしてないんじゃないか?3系と4系でバイナリ互換性
がないというアナウンスも何処かにある?
> もちろん、本家がよりよくなってくれるのが最も望ましい。
俺だって本家を貶すのが目的じゃない。ただ、もっとしっかりしてくれと言いたい。
現状だとTDM版の方が良い選択だと言わざるを得ない状況だ。
680 = :
>>679
> 了解。ただ、インストーラーで gcc3.4.5 をインストールした後で gcc4 を入れようと思うと簡単じゃない
> (ディレクトリ構成が変わっているから戸惑う)。そういう点で問題だと俺は言いたい。
単に展開するだけだし、俺はディレクトリ構成が変わっていることに気づいてさえいなかったぜ!!
(後から気付いたけど。 これは俺がいいかげんなだけかもしれん。)
> GUIツールキットQt 4.5のMinGW用のバイナリインストーラーでインストールされるライブラリは本家の
> gcc3.4.5でビルドされたものだが、TDM gcc4.4.1でビルドしたアプリからちゃんと使えた。
TDM がどうとかいう以前に gcc の変更だ。 実験してみた結果がどうあれ偶然。
何が起こってもおかしくない。 鼻から悪魔。
> ところがQt 4.6のbeta-1には、本家のgcc3.4.5でビルドされたライブラリの他に、本家のgcc4.4.0(Qtライブラリ
> ではなくてコンパイラそのもの)もバンドルされてきた。ところがこの4.4.0でアプリをビルドすると、エラーが
> 出てしまう(3.4.5でビルドされたライブラリと互換性がない)。
エラーの内容が気になる。
エラーが単なる undefined reference の場合、環境構成上のしょーもないことである場合がある。
> テストが足りなかったのは確かだが、やるべきことを迅速にやっている。
迅速だけどテストが足りなかったんだろ。 だからそれは単にスタンスの違いなんだって。
> 本家はlibiconvがリンクされていなくても、アナウンス一つしてないんじゃないか?
required の記述が間違っとるが、どれどれをリンクしたなんていちいち書くかよ。
> 3系と4系でバイナリ互換性がないというアナウンスも何処かにある?
これは常識だと思ってたから疑わなかったけど、一見さんにわかる形では無いかも。
GCC のサイトの方にも目立つようには書いてない。
681 = :
きめえ話してんじゃねーよ
オープンソースなんだから好きにやれや
682 = :
>>681
まったくそのとおりだ。 だから好きに議論する。
便宜上「本家」なんていってるがそれほど絶対的なものではない。
それぞれのスタンスがあるのは当然。
と、言うわけで >>679 が主張するように「TDM 版の方が良い選択」
とする主張を否定するわけじゃないし、その主張が正しいと言える状況はあるんだろう。
でも、そうじゃない状況もある。 それだけの話。
683 = :
話長いw
684 = :
>>680
> 単に展開するだけだし、俺はディレクトリ構成が変わっていることに気づいてさえいなかったぜ!!
> (後から気付いたけど。 これは俺がいいかげんなだけかもしれん。)
環境変数変えなきゃダメだろ?本当に動かしてみたんかね?
少なくともC_INCLUDE_PATHやCPLUS_INCLUDE_PATH、LIBRARY_PATHは変更する必要がある。もしかして単に
展開しただけで環境変数変えてないから、gcc4.4.0使ってるつもりで実は3..4.5のままだったりしてw
> TDM がどうとかいう以前に gcc の変更だ。 実験してみた結果がどうあれ偶然。
> 何が起こってもおかしくない。 鼻から悪魔。
(中略)
> > 3系と4系でバイナリ互換性がないというアナウンスも何処かにある?
>
> これは常識だと思ってたから疑わなかったけど、一見さんにわかる形では無いかも。
> GCC のサイトの方にも目立つようには書いてない。
そんないい加減な情報じゃなくて、しっかり「ここに書いてある」って示して欲しい。そうじゃないと、アンタに「偶然」
だの「鼻から悪魔」なんて書く資格はない。単に実験のレベルじゃないよ。暫く使ってるが、何の問題もない。
> > テストが足りなかったのは確かだが、やるべきことを迅速にやっている。
>
> 迅速だけどテストが足りなかったんだろ。 だからそれは単にスタンスの違いなんだって。
違う。本家はアナウンスすべきことをアナウンスしていない。例えば、MinGW5.1.6のgccは4.4.0じゃなくて3.4.5だって
ことはどこに書いてある?要するにいい加減すぎるんだよ。「スタンスの違い」ってのが「ユーザー重視」と「ユーザー
軽視」の違いってのなら納得できるが。
例えば、ttp://www.mingw.org/wiki/GCCStatus は2009-04-20 以降更新されておらず、現状と合ってない。
SourceForgeのファイルツリーを見ても、「Automated MinGW Installer」のところにリリースノートすら置いてない。
685 = :
MinGW、いったいいつになったら
gcc4採用するんだよ・・・
686 = :
goはbuildできますか?
687 = :
出来ません。
688 = :
>>685
TDM-MinGWはとうにgcc4.4.1なんだが・・・
689 = :
>>686
http://d.hatena.ne.jp/iasija/
690 = :
>>685
本家MinGWだってMinGW5.1.6に含まれていないだけで、gcc 4.4.0は単独で「current release」になってるよ。
TDM版については>>688の言うとおり。
長い話で悪かったが、そのことでずっと>>680とやりあってたんだ。
691 = :
そろそろ長話を止めてくれ
692 = :
cygwinをアンインストールしたいんだがどうしても削除できないフォルダとファイルがある(Windows7)
usr\sbin\sendmailとvar\cron\tabs
アクセス許可云々と出てフォルダが削除できない
所有者が長ったらしい変な名前だったのでアクセス権を自分にしてもできない
コマンドプロンプトや強制削除ソフトとか使っても無理
(あと一つ同じようなフォルダがあったがなぜか削除できた)
どなたか知恵をおかしくだ足
694 = :
>>692
どこかのプロセスのカレントフォルダや
オープンしているファイルなどが、そこのフォルダにあると
消せないみたいだよ。
そこにアクセスしているプロセスを終了すればいいと思うけど、
たぶんわからないのだろうから、一回ログオフするか再起動すれば消えるはず。
695 = :
今TDM版MinDW gcc4.4.1-2のテストを行っています
今までは日本語入出力の問題があってgcc3.4.2を使っていました
あるプログラムを-O3でコンパイルしてみると両方とも10分程度で終わるのですが
3.4.2のほうが20%ほど早くなりました
途中のlogと結果を見るとどちらも-O0の時と同じように動いているように見えます
実際にはこれからプログラムを書き直して10倍100倍の計算をさせたいと思っているのですが
書き方がよくなればTDMの方が早くなるようなものなのでしょうか?
696 = :
ぶっちゃけ状況による。
3 と 4 はかなり根本から変わってしまってて、
最適化フェイズの構成からして違う。
どちらが速くなるかは実測するべし。
697 = :
>>696
レスありがとうございます
インストールがめんどくさいですが、
両方でコンパイルしてみて試して見ることにします
698 = :
え?例えばc:/gcc4/とc:/gcc3/に解凍して
環境変数を使い分ければいいだけの話でないの
699 = :
mingwのgcc4は
for(i=0;i<10;i++){
for(j=0;j<10;j++){
int a = i;
}
}
みたいなことをしたときに、2重ループ内のiが未初期化だったことがあったのでgcc3に落とした。
700 = :
それはないだろう
みんなの評価 : ☆
類似してるかもしれないスレッド
- Cygwin + MinGW + GCC 相談室 Part 8 (938) - [97%] - 2022/10/28 8:00
- Cygwin + MinGW + GCC 相談室 Part 7 (996) - [97%] - 2014/9/21 2:15
- Cygwin + MinGW + GCC 相談室 Part 6 (981) - [97%] - 2012/12/30 23:15
- Cygwin + MinGW + GCC 相談室 Part 5 (981) - [97%] - 2011/4/6 2:32
- Cygwin + MinGW + GCC 相談室 Part 3 (1001) - [97%] - 2008/9/12 0:04 ★
- 【激遅】AppleGCC【絶望】 (111) - [1%] - 2010/1/15 10:31
トップメニューへ / →のくす牧場書庫について