1 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:07:39 ] 史上最強かもしれないツール、GCC(GNU Compiler Collection)について語るスレ。 GNU本家のGCCページ gcc.gnu.org/ Binutils - Collection of binary utilities ←これも必要だぞ。 www.gnu.org/directory/GNU/binutils.html GNU Binutils sources.redhat.com/binutils/ GCC online documentation gcc.gnu.org/onlinedocs/ Installing GCC gcc.gnu.org/install/ GCC Timeline gcc.gnu.org/releases.html#timeline Calendar gcc.gnu.org/develop.html#timeline 前スレ GCCについて part7 pc11.2ch.net/test/read.cgi/tech/1145357824/l50
152 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 15:09:19 ] __GNU__?
153 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 15:19:01 ] __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__
154 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 15:21:44 ] #if defined( __GNUC__ ) #if ( __GNUC__ >= 4 ) かな
155 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:11:00 ] >>152 >>153 >>154 ありがとうございました。助かりました。
156 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 01:06:10 ] IntelのCコンパイラだとデフォルトでは>>153 をdefineしている(オプションで変更可) 特殊かもしれんが
157 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 04:28:24 ] RHLE version3 のサポートが終了してしまうので、 gcc 2.9.6 gcc 3.2.3 から、 RELE version5のgcc 4..xに変更したんだけど、コードの修正メンドくせー、 互換性無いのって悲しいね。
158 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 09:31:31 ] ×互換性が無い ○コードが汚い ザルだった文法チェックに救われていただけ
159 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 10:01:11 ] 普通に書いていれば修正なんてほとんど要らんだろ
160 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 10:36:37 ] >>157 じゃないが、 Cだとgccの移行は簡単だけど、C++だと悲惨。 2->4なんて。 コンパイルエラー/ウォーニングになるのはいいけど、 コンパイラが検出できない奴など。 例えばlookupのルール変更とか。 ADLは便利だけど、難しいから。
161 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:53:45 ] >>160 馬鹿コーディングだから移行が難しいんだよ。 俺も新人だった頃の自分のコードを呪ったよ。 きちんとしたコードはすぐ移行できた。
162 名前:157 mailto:sage [2007/12/23(日) 23:53:40 ] 確かにコードが汚いことが原因で トークンの連結 型(int -> bool) プロトタイプ宣言 関係が9割超
163 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:12:03 ] precompiled headerって全然流行らないね。信用できるのこの機能
164 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:37:49 ] 意外と使われてるのに…
165 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 09:31:10 ] gcc.gnu.org/ml/gcc/2008-01/msg00023.html バグ潰し終わらねー感じ 使ってみてもICEとかc++のスコープとか色々おかしい印象がある 開発者がんばってくれー
166 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 02:18:54 ] >>165 mudflapというオプションを初めて知った。 ひで〜ネーミングだな。
167 名前:デフォルトの名無しさん [2008/01/15(火) 18:42:33 ] 速度云々を無視しよう という条件下だと、fPICって常に付与してていいもんなのか?
168 名前:デフォルトの名無しさん [2008/01/15(火) 23:54:54 ] gcc(3.4)でSJISファイルのコンパイルでうまくいかないので、ご教授いただけたらと思います。 > cat a.c #include "stdio.h" #define AAA(a) BBB(#a) void BBB(char *str) { printf("%s\n", str); } int main() { AAA(あ"い"); BBB("あ\"い\""); } > gcc --input-charset=cp932 --exec-charset=cp932 a.c > a.out あ"磚 あ"い" AAAの方とBBBの方で両方同じ結果が得られそうなのですが、 AAAの方でうまくいっていないのを解決したいと思っています。 ここでは標準出力していますが、内部文字コードはSJISのまま解決したいと思っています。 よろしくお願いいたします。
169 名前:デフォルトの名無しさん [2008/01/16(水) 08:04:12 ] CスレでGCCの範囲だから、すれ違いと言われてここに来ました。 homepage2.nifty.com/m_kamada/fractalp.htm#mandelbmp_c のサイトにある、complex.hを読んでいるんですが、 gccでマクロを展開してここのソースを読むと、 /* setjmp(cjmpenv)の返却値 */ #define C_DIVIDE_BY_ZERO 1 /* 0で除算しようとした */ #define C_ARG_ZERO 2 /* 0の角度を求めようとした */ 略 #endif #if __GNUC__==2 #define complex __complex__ #define Re(z) (__real__ (z)) #define Im(z) (__imag__ (z)) #else typedef struct { double re; double im; } complex; などごっそり書いてあった部分が、 /* setjmp(cjmpenv)の返却値 */ # 24 "complex.h" typedef struct { double re; double im; } complex; # 77 "complex.h" /* xの実数部にsを加える */ # 89 "complex.h" /* xの虚数部にsを加える */ と、# 24 "complex.h"や# 77 "complex.h"などに置き換えられているようです。 この#24や#77はどういう意味なのでしょうか?
170 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 08:25:47 ] >>168 3.4では化けるね 4.2.2だと化けなかった
171 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 08:26:18 ] それと、 「複素数値を持つ式 exp から実数部を抽出するには、 __real__ exp と書きます。同様に、虚数部を抽出するには __imag__ を使います。これはGCCの拡張である。」 とあり、printf("b=%d + %d I¥n", __real__ exp, __imag__ exp); で複素数表示出るのですが、 コレは__real__ という関数名なのでしょうか? でも関数だと( )が必要だし.... そもそも__みたいな変な名前のマクロをどういう意図で作ったのでしょうか? complex.hを見ても良くわかりませんでした。 __のような物がつくプログラムを見たのが初めてで、非常に理解に苦しんでいます。
172 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 11:22:26 ] >>169 マクロ展開前の行番号。コンパイル時にエラー行を表示するためにそう いう情報を残す必要がある。 >>171 sizeof と同じような形式の演算子だと思えばいいんじゃない? __は単に名前の一部。
173 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:18:35 ] 普通の名前と喧嘩しないように __ を付けるのは慣例
174 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:25:52 ] 慣例じゃなくて予約されているんだが
175 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:42:41 ] >>172 ,173,174 お返事有り難うございます。 >普通の名前と喧嘩しないように __ を付けるのは慣例 >慣例じゃなくて予約されているんだが 確かに__って普通の変数には付けないですからね。 どうも有り難うございました。
176 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:09:02 ] あ失礼,そうだった.<慣例
177 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:10:14 ] 書き方おかしかった.<慣例,じゃなくて<予約 スレ汚しすまん
178 名前:デフォルトの名無しさん [2008/01/17(木) 01:56:01 ] gdb+gccなんですがクロスコンパイルしてます。 Aでコンパイル Bで実行。 Bで、はいたコアダンプを冢ってgdbを使いたい場合は Aでmakefile(自動生成)使ってまっす。 どうしたら、ディレクトリ構造とか再現してソース追っかけながらデバッグできますか? makefileに答え有りますか?
179 名前:デフォルトの名無しさん [2008/01/17(木) 02:03:30 ] Bで、はいたコアダンプを冢ってgdbを使いたい場合はどうしたら良いですか? 文が変だた
180 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 02:04:18 ] >>178 Bでgdbserver走らせるのが一番楽じゃない?
181 名前:デフォルトの名無しさん [2008/01/17(木) 02:08:28 ] >>180 おとなの事情というか会社の事情で無理なんです
182 名前:181 [2008/01/17(木) 02:30:08 ] 少し確認ですが Aにもgdbserverがデーモンのように動く必要ありますか? Bにも同じgdbserverが必要ですよね? Aで負荷高くなりそうですね
183 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 03:33:23 ] >>180 あ、ごめん、コアの話しか。 そういう機能はgdbserverにはないね。
184 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:43:02 ] だめだ。 __real__って何なんだ? 関数ではないしcomplex.hにも定義されていない。 gcc機能拡張ってのがよくまずわからない。 特殊な演算子なんですか?
185 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:50:58 ] >>184 わからないなら自前の構造体定義すれば?
186 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 17:06:00 ] >>184 何をわかる必要があるというんだろう。sizeof だってどこかのヘッダで 定義してあるわけじゃないけど使えるでしょ? infoの説明はこれだけしかないけど、これで十分つかえるじゃないか。 > To extract the real part of a complex-valued expression EXP, write > `__real__ EXP'. Likewise, use `__imag__' to extract the imaginary > part.
187 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 17:06:53 ] >>184 www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_4.html#SEC72
188 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:06:35 ] ttp://gcc.gnu.org/ml/gcc/2008-01/msg00387.html GCC 4.3 もリリースモードへ突入
189 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 10:38:15 ] みんなGDBを使ってデバッグしてるの? それともprintf?
190 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 12:07:11 ] うかつに手を出せないところはInsight使ってるけど printfの方が早いな
191 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 15:55:53 ] printfで場所を大まかに限定してソースとにらめっこ ドコでも使えて簡単だから…
192 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:15:01 ] んで core 吐いたら gdb
193 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:11:31 ] printfってプログラム埋め込み? debuggerのbreakpointsでprintfするんじゃなくて? 埋め込みなんてここ5年くらいやったことないわ。
194 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:12:44 ] デバッグトレースした方が便利な事もあるぜ。
195 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 01:52:18 ] デバッグトレースって何さ
196 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 02:09:06 ] デバッグ時のみ文字列出力。
197 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 02:13:55 ] 社内用語乙。
198 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 02:22:41 ] デバッグトレース の検索結果 約 3,320 件
199 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:40:49 ] でもまー、ふつー「バックトレース」
200 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:43:31 ] 違った。 つか「デバッグトレース」って、デバッグ目的のトレース実行とか、 呼び出し順の出力のことじゃね?
201 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 14:10:36 ] 「光ファイバーチャネル」みたいなもんだな。
202 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:47:47 ] TRACE(_T("Debug trace\n"));
203 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:41:45 ] >>202 それなんですか?
204 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:44:02 ] MFC だな
205 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:44:42 ] MFCって、GCCで使えるんですか?
206 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:44:58 ] mingw で使えるんじゃね?
207 名前:デフォルトの名無しさん [2008/01/27(日) 18:47:27 ] お前ら、4.3の話でもしようぜ
208 名前:デフォルトの名無しさん [2008/01/31(木) 08:26:24 ] とりあえず「ミングダブリュー」って言うな。
209 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 08:33:44 ] 明w
210 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:46:43 ] ミングダブリューさんじゅうにって読んでた ミンジーダブリュー?
211 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:54:59 ] ミンジーダブリューって読んでた
212 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 15:57:19 ] ミングウだろ・・・常識的に考えて・・・
213 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:07:33 ] ja.wikipedia.org/wiki/MinGW >MinGWの規範となる発音は未だ決定されていないが、一般的には、 >"ming wee", "min gee double-u","ming double-u" or "min gnu" >などのように発音されている。 いい加減なもんだよな…
214 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:00:39 ] みんな MinGW の読み方には苦労してんのね
215 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:10:40 ] みんぐぅ
216 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:56:54 ] ミンジーダブリューだろ・・・常識的に考えて・・・
217 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:09:07 ] ゴールデンウィーク最小
218 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:15:04 ] みんぐうぃん
219 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:19:04 ] エムアイエヌジーダブリューだろ・・・常識的に考えて・・・
220 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:27:13 ] そういやいつからMingwinからMinGWになったん? 前は「みんぐぃん」て発音できたが今のは悩む・・・
221 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:55:58 ] つまり みにまりすとぬーふぉーういんどーず と読むと?
222 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:57:21 ] マゾ イン ゴールド ウォーターって読んでたわ・・・
223 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 06:29:39 ] MGW
224 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 07:54:17 ] みんぐw
225 名前:デフォルトの名無しさん [2008/02/01(金) 09:09:52 ] ゴールデンウィークが最小限な事。 また、それを嘆くさま。
226 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 16:20:09 ] みんぐー
227 名前:デフォルトの名無しさん [2008/02/01(金) 17:30:48 ] お前ら、4.3の話でもしようぜ
228 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:12:49 ] 今年度中にリリースされる?
229 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 10:21:55 ] February 1, 2008 GCC 4.2.3 has been released.
230 名前:デフォルトの名無しさん [2008/02/03(日) 23:00:40 ] すいません.質問させてください. GCC のソースコードを読み解いて理解したいと思っているのですが, 手始めに,あるいはコードを解読する際のガイドとして読んでおくべき 書籍あるいはサイトで,有用なものとしてはどんなものがありますでしょうか? 英語でもまったくかまいません. 一応,自分が読んで理解したい部分は C++ コンパイラの字句・構文解析部 (フロントエンド部と呼ぶようですけれど) です.
231 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:47:28 ] 茨の道じゃろうて・・・ コンパイラを作りたいか?カスタマイズしたいのか?
232 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:54:56 ] GCCのすぱげっち読むよりはもうちょっとマシなものありそうだけど。
233 名前:230 mailto:sage [2008/02/04(月) 01:04:00 ] >>231 茨の道なのは重々承知のつもりでお聞きしています. 動機は最終的にはカスタマイズですけれど, 純粋に GCC の挙動を理解するだけでも得るものはあるかとは思っています.
234 名前:デフォルトの名無しさん [2008/02/04(月) 01:55:12 ] #pragma once は今でも非推奨ですか?
235 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:00:16 ] >>230 ,233 最終目標がGCCのカスタマイズなら、最初からGCCのソースを追えばいいかもね。 コンパイラの作り方を知りたいなら、ソースから読むのは学習効率が悪い。 ついでに、GCCはスパゲティだし大きいしで選択肢としても良くない。 もしまだ知らないなら、古典のdragon bookを読むとか、flex & bisonを触るとか その辺からでは。最近の事情はわからんので、もっと手っ取り早い方法があるかも。 もしかして、GCCの最適化エンジンとかプロセッサ対応とかのバックエンド側を いじりたいんではなく、フロントエンド側(入力言語)を拡張したいん? GCCのドキュメントのどこかに一通り書いてありそうだが、漏れは知らんわ。すまん。 GENERICやGIMPLEを探ればいいんかな。
236 名前:230 mailto:sage [2008/02/04(月) 02:13:34 ] >>235 非常に参考になる意見ありがとうございます. >もしまだ知らないなら、古典のdragon bookを読むとか、flex & bisonを触るとか dragon book は持ってはいますが気合入れて読んだことがなかったです.頑張って精読します. flex & bison も玩具程度の弄り方しか試してなかったので,ちょっと本気で触ってみます. >もしかして、GCCの最適化エンジンとかプロセッサ対応とかのバックエンド側を >いじりたいんではなく、フロントエンド側(入力言語)を拡張したいん? はい,バックエンド側には今のところほとんど興味がありません. 最終的な目標はフロントエンド側 (入力言語……といいますか C++) の拡張です. ただ,これはあくまで最終的な目標として設定しているだけです.
237 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:42:19 ] なんかそういうプロジェクトをどこかで見たような gccじゃなくて
238 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:56:44 ] LLVM?
239 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:11:06 ] >>237 > なんかそういうプロジェクトをどこかで見たような > gccじゃなくて COINS?
240 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:24:34 ] 入力言語をC++に変換するプリプリプロセッサを作るのが簡単のような
241 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:41:11 ] NVIDIAのCUDAのコンパイラ(nvcc)が内部でgcc使っているみたいだ。 つまり、拡張仕様の入力から独自仕様の出力を得ている模様。
242 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 15:55:42 ] Cell 用の spu-gcc もかなり弄ってるみたい
243 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 16:55:04 ] >>236 まずyacc & bisonの勉強 次に gcc.gnu.org/readings.html , GCC-specific Literature 特にtoy example languageとRTL C++拡張ということならOpenC++ (今はもう更新してないみたいだが)
244 名前:230 mailto:sage [2008/02/04(月) 20:11:15 ] GCC を弄る先例として色々見る価値のあるプロジェクトはあるみたいですね. >>240 構文チェックなどについては GCC に実装されている部分を流用し, interact させたいので,独立した preprocessing は今のところ考えていないです. >>243 色々助言していただいて本当に助かります.
245 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:21:21 ] 質問させてください。 wxWidetsっていうのを使ってプログラミングしてるんですが、 g++ -o hello2 hello2.o `wx-config --libs` みたいにやると /usr/lib/gcc/i486-linux-gnu/4.1.3/../../../../lib/crt1.o: In function `_start': (.text+0x18): undefined reference to `main' って言われてしまい、コンパイルできません。何がいかんのでしょう?? これだけだと分からないと言われそうなのですが、ソースがちょっと長いので・・ でも参考サイトの指示通りに書いた簡単なプログラムなので、ソースじゃなくて何か基本的な設定とかが間違ってるんじゃないかと思ってここに来ました。 OSはubuntu7.1.0です。他のプログラムならコンパイル出来ている状態です。(やはりソースが間違ってるんでしょうか・・) どなたかアドバイス頂けると幸いです。
246 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:24:07 ] gccのフロントエンドはここのブログが参考になる。 alohakun.blog7.fc2.com/?all ILogScriptがgcc4.xに対応してほしいぜ。 誰かやってくれよ。
247 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:27:10 ] >undefined reference to `main'
248 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:31:18 ] wo神ならなんとかしてくれる
249 名前:245 mailto:sage [2008/02/05(火) 04:35:12 ] すいません解決しました。やはりただのソースの問題でした。 247さんありがとうございましたm(_ _)m
250 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 05:21:07 ] >>228 2月初旬の予定だそうだよ。
251 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:35:15 ] gcc.gnu.org/bugzilla/show_bug.cgi?id=32544 未だにこれが直ってないのでr300の人はご注意を。
252 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:48:52 ] >>245 またおまえかw