1 名前:デフォルトの名無しさん [2006/04/18(火) 19:57:04 ] 史上最強かもしれないツール、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
288 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 19:17:47 ] >>287 hage
289 名前:デフォルトの名無しさん [2006/08/19(土) 12:25:27 ] シグナルハンドラの中で使用する大域変数の型は volatile sig_atomic_t でなければいけないと書いてあるですが 率直に言って何故なんでしょうか? volatile は最適化の影響を避けるためというのは理解できますが、 volatile int でも良いと思うのですが。 sig_atomic_t は一つの機械語命令で実行できるとなっていますが そうでなければいけない理由って何でしょうか?
290 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 13:16:17 ] その変数をセットする命令列の途中でシグナルが発生する可能性があるから。 たとえば変数が64ビット整数だとして、上位32ビットをセットする命令と 下位32ビットをセットする命令の2つでアクセスが構成される場合、 シグナルハンドラの中で有効な値がとれる保証がない。
291 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 14:06:54 ] >>290 レスありがとうございます。 挙げていただいた例に従うと、 上位32ビットをセットする命令の実行後、下位32ビットをセットする命令の 実行前にシグナルが発生したら問題になるということですね? かなりきわどい条件ですが、発生したらデバッグできなそうです。
292 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 01:46:24 ] SSEとかってみんなインラインアセンブラで書いてるの? それとも組み込み?内臓?
293 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 07:59:44 ] ヒント SIMD最適化
294 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 13:19:44 ] 自分でも書くだろ。
295 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 21:05:00 ] asm文
296 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 22:32:03 ] int main(viod){ _asm{ 〜 } return 0; }
297 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 23:33:46 ] memalignとか__mm_mallocとか使えるならそれでもよさげなんですが
298 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 00:30:58 ] 最適化微妙だけど、gcc4.1使ってSIMD最適化して それを見ながらasmするってのが趣がありそうなのでやってみることにします
299 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 14:02:23 ] gcc.gnu.org/wiki/GCC_4.3_Release_Planning
300 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 17:52:11 ] 300
301 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 00:37:34 ] gcc3 とgcc4 を SPECint で比較した資料ありますか?
302 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 02:52:36 ] for(int i=0;i<10;i++){ : : } このコードでエラーを吐かれたときからGCCが嫌いになった。それだけ
303 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 05:13:50 ] ばかキタ-
304 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 06:14:15 ] >>303 ちげーよ ある仮定を1つ言ってないだけさ
305 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 06:57:55 ] やっぱり>>303 であってるじゃないかー
306 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 07:44:31 ] >>304 バカがキタことになってるよ 詳しく
307 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 12:18:56 ] [919]デフォルトの名無しさん 2006/03/19(日) 08:52:45 >>918 ちげーよ ある仮定を1つ言ってないだけさ これ何か流行ってるの? それともやっぱり >>303 なの?
308 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 13:45:06 ] 暇なので。 >>302 自分のミスに気づかないだけならまだしも、それが他人のミスであることを前提に話をすすめるのは典型的なできないプログラマだ。 infoも読めない自分を嫌いになれ。 `-std=' Determine the language standard. This option is currently only supported when compiling C or C++. A value for this option must be provided; possible values are (略) `c99' `c9x' `iso9899:1999' `iso9899:199x' ISO C99. (ばっさり略) `gnu89' Default, ISO C90 plus GNU extensions (ばっさり略)
309 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 14:18:54 ] error: 'for' loop initial declaration used outside C99 mode
310 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 15:05:04 ] manは読むけどinfoは読まないな インターフェイスが嫌い
311 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 15:27:38 ] 禿げて同意
312 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 17:23:09 ] infoのほうが、大抵詳しく書いてあるのですき。 interfaceも好き。
313 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 01:20:20 ] 俺も info は嫌いだな。 インターフェイスが嫌なのもあるけど、既に man があるのに別の仕組みを 押し付けられる感じが嫌だ。
314 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 01:31:20 ] 楽して調べたいわけですよ infoは操作がメンドイ
315 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 01:47:31 ] つかinfoならhtmlでいいじゃねぇかと思うことしきりなんだけどなぁ。
316 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 01:53:03 ] htmlでいいなら、info2htmlでいいじゃん。 infoがperlのmanみたいにできるといいな。 perl(1)より Overview perl Perl overview (this section) perlintro Perl introduction for beginners perltoc Perl documentation table of contents Tutorials perlreftut Perl references short introduction perldsc Perl data structures intro perllol Perl data structures: arrays of arrays perlrequick Perl regular expressions quick start perlretut Perl regular expressions tutorial (ry
317 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 20:58:34 ] 共有ライブラリのsonameをバイナリの状態で書き換える方法ってないものでしょうか? ソースコードからmakeして、ldのオプションで設定するっていうのは無しの方向で考えているんですけど...。
318 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 23:33:24 ] >>317 つ LD_PRELOAD
319 名前:デフォルトの名無しさん mailto:sage [2006/09/25(月) 02:46:40 ] >>292 xmmintrin.h これ定説。
320 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 21:38:37 ] すみません。質問です。 C#で、メモリが開放されるタイミングってどんなときでしょうか? プログラム内で今開放してって指定できないでしょうか?
321 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 22:42:48 ] >>320 誤爆?
322 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 02:19:06 ] GCの質問なんだが。
323 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 02:23:08 ] >35-37
324 名前:デフォルトの名無しさん [2006/10/09(月) 02:42:55 ] gccでC#ってコンパイルできたっけ?
325 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 08:12:41 ] >>324 ちげーよ ある仮定を1つ言ってないだけさ
326 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 09:42:50 ] >>324 つ www.dcl.hpi.uni-potsdam.de/research/lego.NET/
327 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:09:28 ] gccではgetche();の関数は使用できませんか?
328 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:15:28 ] >>327 なんでそんなこと聞くんだ。 やってみりゃいいじゃないか。 あと、includeディレクトリをgrep
329 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:28:38 ] >>328 当方Win XPにCygwinの環でございます。 #include <conio.h> を入れたソースをコンパイルしようとするとconio.hがみつから無いようなことが返されます。 当方の環境では C:\cygwin\usr\include\mingw の位置にconio.hは確認することが出来たんですが。 C:\cygwin\usr以下に conio.hとにコピーしたら_mingw.hが無い、_mingw.hをコピーしたら_getcheが無いようなことを言われました。 確かにconio.hの中には_getche (void)の記述はあったんですがどうにも動いてくれません。 当方Cygwin+gccの環境初心者の為すみません。
330 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 17:59:36 ] つまり、mingwを使いたいと言いながらgccを使っているわけだ。
331 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 18:35:45 ] >>329 -mno-cygwin
332 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 15:33:30 ] gcc-3.3とgcc-4.1.1がインストールされてて今は普通にgccって実行したらgcc-4.1.1が起動するんだけど、 これをgcc-3.3にする方法ないですか?-V 3.3付けるとかじゃない方法で。
333 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 16:40:38 ] つgcc-config
334 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 16:42:44 ] つgcc-config
335 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 17:17:55 ] >>333 >>334 ない。
336 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 18:14:31 ] ないものは作れ。
337 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 18:28:26 ] ちょ、おま
338 名前:デフォルトの名無しさん mailto:sage [2006/10/13(金) 18:43:01 ] パス
339 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 20:32:52 ] cygwinにgcc3.4.6が
340 名前:デフォルトの名無しさん [2006/10/15(日) 20:08:00 ] 軽い気持ちでgcc 3.4.6をビルドしようとしたら半日経っても終わらない。 そらcygwinの中の人の腰が重いわけだ。
341 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 20:14:50 ] 逆にGCC 4.1.1をCygwin上でビルドしたが、数時間で終わった。
342 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 20:29:42 ] GCC4.1.1をMinGWにインストールする方法を教えてください。
343 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 20:31:51 ] とりあえずセルフビルドなら特に問題は生じない。
344 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 20:33:25 ] Cygwin GCC 3.4.6作るには ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-3.4.6/gcc-3.4.6.tar.bz2 とGDCとGPCを落として解凍して ./configure --verbose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug の後 make CFLAGS='-O' LIBCFLAGS='-g -O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap …でいいんだよね?
345 名前:デフォルトの名無しさん mailto: [2006/10/15(日) 20:44:04 ] >>344 成功したら配布きぼん。
346 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 21:00:11 ] >>342 gcc.gnu.org/ml/gcc/2006-09/msg00044.html gcc.gnu.org/ml/gcc/2006-08/msg00583.html gcc.gnu.org/gcc-4.1/buildstat.html
347 名前:340 [2006/10/15(日) 22:36:40 ] いい加減キレそうだ…もう寝る。 で、起きた頃にはエラーで止まってるんだろ。 俺の人生そんなもんよ。
348 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 22:38:05 ] がんばれ。とにかくがんばれ。人生がんばるしかない。
349 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 22:44:58 ] bootstrapだと、自分を三回コンパイルするんだっけ
350 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 23:04:49 ] 古いgccでコンパイルした新しいgccでコンパイルしたgccで更にコンパイルするんだっけ?
351 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 23:28:20 ] こうかな? ・まず3.4.5とかで3.4.6を作る ・作った3.4.6でもう一回作る。これが「3.4.6で作った3.4.6その1」となる。 ・更に「3.4.6その1」で「3.4.6その1で作った3.4.6その2」を作る。 ・「3.4.6その1」と「3.4.6その2」のオブジェクトを比較して同じならOK。 何か一つでも違っていたら3.4.6は3.4.6でも 場合によって違うものを作り上げるイケてない3.4.6ということだからエラーで止まる。 だからGCC作者自身がbootstrapはやるべきだと言ってるのか。
352 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 23:45:45 ] 最初に使う3.4.5はどうやって作ったの?
353 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 23:51:00 ] あーもう。 だれかバイナリ上げれば済むこったろ。 待っとけ。 俺はやらないけどな。
354 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 23:56:58 ] >>352 3.4.4で作るに決まってるん
355 名前:デフォルトの名無しさん [2006/10/15(日) 23:58:19 ] 決まってるん
356 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 00:46:43 ] >>354 じゃあその3.4.4はどうやってくつったのよ?
357 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 00:54:33 ] 3.4.3で(以下略
358 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:10:58 ] くつった
359 名前:デフォルトの名無しさん [2006/10/16(月) 01:12:37 ] じゃあその3.4.3を作った3.4.2を作った3.4.1 (中略) 一番最初はどうやって作ったのよ?
360 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:15:49 ] 別のCコンパイラ
361 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:18:30 ] >>351 ほか 理想論では、Cコンパイラがあればstage1をビルドできる。 stage2以降は先行stageなgccでビルドするから問題なし。 現実的には、3.4.xは3.3.x以降ならだいたいビルド可能な感じかな。 3.0.xあたりだと微妙かも。2.95とかはトラップがあったような。 gccのソースコード内にgcc依存な記述がどのぐらい入っているのかはよく知らん。 完全に標準C準拠な記述だけなら使う側は幸せだけど、きっとそんなことはないな。 Q. このCコンパイラはどうやってビルドしたの? A. 別のCコンパイラを使ってコンパイルした Q. その別のCコンパイラは(ry …最初だけは適当なバイナリ使え。
362 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:23:39 ] 一番最初までさかのぼると機械語で直にコーディングした強者にたどり着くのだろう
363 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:39:10 ] >>362 つクロスコンパイラ Q. このクロスコンパイラはどうやってビルドしたの? A. 別の(ry まあほんとの最初はやっぱり機械語なはずだな。 Cが生まれた頃には別の高級言語やアセンブリ言語があったから、 機械語から直接Cに来たってことはないだろうけど。 ttp://en.wikipedia.org/wiki/C_%28programming_language%29
364 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 02:47:05 ] GCCの起源をさかのぼると紙テープになるってか?
365 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 03:09:31 ] ∧ ∧ <丶`∀´> ウリナラがこのスレに興味を持ったようです。
366 名前:デフォルトの名無しさん [2006/10/16(月) 12:41:55 ] 俺も今朝出るときビルド仕掛けた。 帰る頃には終わってるだろう。
367 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 14:03:15 ] >>362 つ BASICインタプリタ
368 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 15:18:52 ] >>367 そのBASICインタプリタはアセンブラで書かれていなかったかい?
369 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 16:39:25 ] >>361 Wikipedia日本語版に、GCCはK&R Cで書かれているとあるが、実際のところどうなんだろう?
370 名前:デフォルトの名無しさん mailto:sage 「K&R C」を「Turbo C」とか「MS C」みたいのだと思ってる? [2006/10/16(月) 17:25:14 ] ソース見ればわかるじゃん。
371 名前:デフォルトの名無しさん mailto:sage それはない [2006/10/16(月) 17:33:10 ] どう見てもANSI Cです。(関数宣言のあたり) ってGREPすると__attribute__も少しは見かけるな。
372 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 17:51:02 ] 環境:cygwin+3.4.4-2シリーズ ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-3.4.6/gcc-3.4.6.tar.bz2 www.gnu-pascal.de/alpha/gpc-20060325.tar.bz2 解凍後 ./configure --verbose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,f77,pascal,java,objc --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug make CFLAGS='-O' LIBCFLAGS='-g -O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap make install できた。
373 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 21:19:40 ] >>372 乙彼サマですっ(゚Д゚)>ビシッ
374 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 02:55:16 ] 俺もできることはできたんだけど何故かディレクトリ設定がしっちゃかめっちゃかになっていて Cygwinのインストーラーで入れるgccバイナリのように何も考えずに使うことはできない状態。 やっぱりCygwinによくなじむgccはCygwinの中のおっさんにしか作れないのかもしれない。 けどおっさんは例え3.4.4に不具合報告されていようと自分自身がその不具合に遭遇しない限り ビルドする気なさげっぽいんだよな。
375 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 08:34:07 ] 説得する側の説得力と貢献が足りないのでは?
376 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 18:42:18 ] というわけでCygwinからMinGWに鞍替えします。
377 名前:デフォルトの名無しさん [2006/10/18(水) 22:52:49 ] xxx.upken.jp/up/download.php?id=0003e2ab94c1ad3efd7ed5178e4a1b8476494706 ”MinGW用”GCC 3.4.6バイナリ Pass:mingw 有効期限は3日、ダウンロードは5回までです。
378 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 23:18:35 ] 転載要る?
379 名前:デフォルトの名無しさん mailto:sage [2006/10/18(水) 23:37:12 ] ( ^ω^)
380 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 02:19:58 ] スレの住人数的に5人で十分つーか普通は自分で作れるっしょ。
381 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 18:10:19 ] 自分で作れない奴は使えなくていいんだよ
382 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 18:53:15 ] gccのコンパイルは自分でやったこと無いけど、 某g*cはコンパイルに丸一日かかると聞いたので 時間が惜しい人もいるかなあ、と。
383 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 20:39:49 ] そんなに時間が惜しければ、寝ていたり出かけていたりする間にやらせれば良いだけ。
384 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 21:33:05 ] 自分でやりたくなければ、バイナリが配布されるのを待てばいいじゃない
385 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 21:41:31 ] 半年以上待ってます。
386 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 21:47:36 ] --enable-languages=c,c++ だったらすぐじゃん。 java→SUN使え pascal→でるふぃ使っとけ ada→知らん f77→知らん objc→知らん
387 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 00:59:57 ] c++を友好にするだけでけっこうかかるぞ。 それにやっぱ今はjavaを有効にしてネイティブコンパイルするのがトレンドじゃないか。
388 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 01:06:15 ] >>387 どうせ不安定