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
610 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:56:30 ] >>608 アリガトン!でも除去してくれなかったよorz。
611 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 13:22:17 ] >>610 ソースを一つに纏めて、全ての関数にstaticをつけると未使用関数は消えてなくなるんじゃね?w
612 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 15:49:11 ] >>611 その辺を-fwhole-programが面倒見てくれるのかと思っていた時期もありました・・・
613 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 16:09:56 ] MacOSXでg++の4系列を使い始めたのですが, 以下のコードでコピーコンストラクタがないと起こられます. #include <iostream> using namespace std; class A { A (const A &p); A &operator = (const A &p); public: A () {} friend ostream &operator << (ostream &p_os, const A &p_a) {return p_os;} }; int main () { cout << A () << endl; return 0; } エラーメッセージは test.cpp:4: error: 'A::A(const A&)' is private test.cpp:12: error: within this context です.g++-3.3では起こられないのですが,これってg++-3.3の方が正しいですよね? powerpc-apple-darwin8-g++-4.0.1 (GCC) 4.0.1 g++-3.3 (GCC) 3.3 20030304
614 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 18:54:17 ] C++相談室で聞くことにします
615 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 22:24:49 ] つ ttp://lists.apple.com/archives/xcode-users/2007/Mar/msg00193.html この辺の話じゃね?
616 名前:デフォルトの名無しさん mailto:sega [2007/04/15(日) 07:47:47 ] a==1; これについて、Warningを吐いてくれるオプションってある? -Wall とか以外で。
617 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 10:11:39 ] warningを個別に禁止・許可することができるようになりましたか?
618 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 10:56:35 ] なんで道具に頼るんですか?
619 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 15:29:58 ] チェックを人間の目に頼るのは小学生まで
620 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 17:13:21 ] 幼稚園児?保育園児?
621 名前:デフォルトの名無しさん [2007/04/15(日) 20:45:08 ] >>617 2000年問題とかは個別に禁止・許可できるよ
622 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 20:53:26 ] まだできないようですね。やれやれ。
623 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:09:08 ] できました。ありがとうございました。
624 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 00:19:47 ] ちょっと.code16モードで生成されるコードに疑問があるので質問させてください。 __asm__(".text\n.code16\n.global _start\n_start:\njmp boot_main\n"); void asm_putc_ng(char c) { __asm__("int $0x10" :: "a"(0x0e00|c), "b"(0x7)); } void asm_putc_ok(char c) { __asm__( "mov 6(%ebp), %eax\n\t" // ココ。gccは8(%ebp)を生成するが・・・ "or $0x0e00, %ax\n\t" "mov $0x07, %bx\n\t" "int $0x10\n\t"); } void boot_main(void) { asm_putc_ok('D'); asm_putc_ng('D'); } BIOSコールで文字を出力するサンプルですが、.code16モードだと 引数のスタック上位置の計算がおかしく、引数が正常に渡りません。 こんなコードが生成されます: asm_putc_ok: ! asm_putc_ng でも同様のプリアンブルを生成 pushl %ebp movl %esp, %ebp subl $4, %esp !char c用にスタック領域を取る movl 8(%ebp), %eax !第一引数をEAXに入れようとしてるがオフセットおかしくない? movb %al, -4(%ebp) !charなんでALだけ領域に書けば十分 リターンアドレスは16bitなので、ここは8(%ebp)でなく、6(%ebp)が 正しくないでしょうか?実際、それだと指定の文字を正しく出力します。 しかし、超メジャーなx86 gccでバグがあるとも思えないので、私が 単に16bitコード生成のための何かをしていないのではと悩んでます。 どうすれば正しいコードを生成させられるでしょうか?
625 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 00:41:38 ] >>624 それはそういう仕様 16bitモードで使いたいなら素直にnasmでも使っとけ いや、絶対その方が不可解なところで悩まなくていいから。
626 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 01:20:06 ] MJD?でもサンクスコ。しかし説明だけ読んでる限りだと .code16 - 16bit-based instruction, 32bit data .code16gcc - 16bit-based instruction (partly 32bit), 32bit data .code32 - full 32bit instruction/data となると思ってしまうよなー。実際には16bitモードなアセンブラを埋めるために 使うことだけ想定してて、16bit C compilerとして使うことは想定してないのね。
627 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 15:09:24 ] ttp://gcc.gnu.org/ml/gcc/2007-04/msg00509.html さてさて、4.2はどうなることやら。
628 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 17:00:31 ] ttp://journal.mycom.co.jp/news/2007/04/10/019/index.html ってことで、FreeBSD 7はgcc-4.1にしようと作業中で、 アプリとコンパイラの両方でのバグ出しも進んでいるみたいですな。 4.2系と違って4.1系はsnapshotもきちんと1週間毎に出てきているし、 4.1.3は結構よさげなリリースになる予感。
629 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:55:40 ] もう世間のディストリのbugzillaは4.2/4.3の対応待ちとかで埋まってるのに、1周期ずれてるなw
630 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:06:43 ] 629はかなり頭が悪そうな雰囲気
631 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 17:36:43 ] 広く出回ってるアプリケーション?をgcc3.4系でコンパイルする際に つけといたほうがいいオプションってありますか? ほとんどの場合以下のオプションをつけてます。(xeon 5130の場合) CC=gcc \ CFLAGS='-march=nocona -mcpu=nocona -m64 -O9 -mmmx -msse -msse2 -msse3 -mfpmath=sse' \ LDFLAGS="-z combreloc" \ ./configure \ (その他configureのオプション)
632 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 18:18:02 ] >>631 -Wall -pedantic -std=c99 --input-charset=??? --exec-charset=euc-jp
633 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 19:24:53 ] エラーチェックを厳しくするオプションと ソースにマルチバイトが含まれてるときの処理 でしょうか? 自分で書く際には役に立ちそうですが 人のコードコンパイルするときには使いにくそうですね。 最適化オプションの話がききたかったのですが ...とおもったらここプ板なんで作る側の板なんですね 検索できてそのまま書いてしまいました。 板違いですねorz
634 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 23:35:31 ] >>631 とりあえず重複が多い。info見とき。
635 名前:デフォルトの名無しさん mailto:age [2007/04/21(土) 00:58:26 ] スレ違いかもしれませんが、他に適当なスレがないのでここで質問させてください。 arについてなのですが、同じ名前でディレクトリが違うオブジェクトファイルをライブラリに詰めたとします。 たとえば、 /dir1/obj.o /dir2/obj.o があったとして、 ar rcs libtest.a /dir1/obj.o /dir2/obj.o とやったような場合です。この場合libtest.aの中にはobj.oが2つ存在することになります。 このライブラリを展開すると、obj.oは1つしか出てきません。 2つ出るのかもしれませんが、1つは上書きされるようです。 オブジェクトファイルを2つとも取り出すにはどうしたらいいんでしょうか。
636 名前:635 mailto:sage [2007/04/21(土) 13:15:51 ] どうやらどのオプションを使っても方法がないようなので、 自分でbinutilsのソースを書き換えました。
637 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:16:03 ] GCC 4.2.0 Status Report (2007-04-24) gcc.gnu.org/ml/gcc/2007-04/msg00850.html 4/29フリーズ&RC 5月第一週リリース予定だそうな 出来はいいからとにかくリリースして4.3に集中してほしいな
638 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:26:07 ] >>637 いままでのstatus reportや、RCの出来を考えると、4.2系には不安がいっぱいというか まるで期待が持てないものねぇ。
639 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:04:32 ] リリースするより、4.2はなかったことにして4.3になるはずのものを 4.2にスライドしてくれる方がいいんじゃない?
640 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 13:02:19 ] >>639 そういう意見も強かったようだけど、4.2をそのままリリースすることに決まっちゃったからねぇ。 しょうがないので、4.2の下手なマイナーアップデートをせず、4.1と4.3に力を注いで欲しいところ。
641 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 18:08:00 ] ttp://www.itmedia.co.jp/enterprise/articles/0705/01/news010_4.html > GCC 3.3よりもGCC 4.0でビルドする方が高いパフォーマンスを得られる 3系の方が速いのかと思ってた
642 名前:・∀・)っ-○◎● mailto:sage [2007/05/01(火) 19:51:59 ] 絶対嘘。3.3のほうがバイナリ速い。
643 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 20:26:49 ] 場合によるだろ すぐに絶対とか言っちゃうやつは馬鹿な証拠
644 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 20:57:03 ] >>641 何がしたいのかよくわからない記事だね。 ブラウザを起動させたまま同じページを100回ロードするとかの方がいいだろうに。 あえて>>641 を材料に考えると、3通りの全てのテストで3.3と4.0の差は optの方がnooptより縮まっているのだから、3.3の方が4.0より最適化が 優れていると考えるのが自然だと思う。 全条件にわたって4.0のグラフの方が短いのはシンボル解決など起動時の負担が 小さくなるような仕様の変更があったのではないかと推測。 あと、今時こういう測定で「画像主体」はないんじゃないかとw CSSバリバリとかDHTMLとかSaaSとか、重さを感じるページってのはそういうの なんだからその辺でやってくださいよと。
645 名前:デフォルトの名無しさん [2007/05/01(火) 21:26:37 ] 団子ちゃんが言うことは絶対なんデス><
646 名前:デフォルトの名無しさん [2007/05/01(火) 21:50:00 ] つーかさ、そこらのコードがちょっとばかし速く動くより、 ダンゴさんのコードが速く動くことのほうが、 全世界的に見て有用だろ。
647 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 22:35:36 ] 団子のコードが速くなる3系>>>>>>firefoxが速くなる4系
648 名前:・∀・)っ-くコ:彡- mailto:sage [2007/05/02(水) 00:29:51 ] いかさまだろ
649 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 05:57:54 ] 短時間で連レスする奴が並んでるな 後半消えてるけど
650 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 07:19:33 ] ITmediaも暇なことしてるなw httpなんて最適化で劇的に高速になるわけねーんだから ユーザーがビルドしても時間のムダでしかないだろ。
651 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:03:52 ] これほど偉そうな割にピント外れのレスも珍しい。
652 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 12:33:38 ] 社員乙
653 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 15:16:59 ] レンダリングのことをダウンロードだと思っているようで。
654 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 15:19:13 ] 言い方変だったな。 firefoxではローカルファイルを表示できないと思っている、というほうが正しいか。 まあGWだから仕方ないけど。
655 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:39:12 ] HTML解析と内部DOM生成、スクリプトとのやりとり、レンダリング どれも重そうだよ
656 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:51:07 ] しょうもないことしてるな。 一ランク上のプロセッサ買ったほうが手っ取り早いだろ。
657 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:51:56 ] そのネタもう飽田
658 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 06:06:16 ] フルアセンブラでブラウザ書けばきっと速いよ ハ_ハ ('(゚∀゚∩ はやいよ! ヽ 〈 ヽヽ_)
659 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 06:10:02 ] そのネタも、最適化なめるな突っ込みも、もう飽北
660 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 11:21:58 ] シェルスクリプトでブラウザ書けばきっと(ry
661 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:17:10 ] ハンドレンダリング これ最強。
662 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 04:56:58 ] >>661 だよな、テーブル表記なんか心が和む微妙な曲線で描かれるんだぜ
663 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 12:47:42 ] openmpが使える環境だと4.2の方が圧倒的に速いね
664 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:23:45 ] GCC って今 rand のアルゴリズムに何使っとん?
665 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:29:20 ] GCCって乱数なんか使ってるの?
666 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:30:30 ] 使っているlibraryによる。 liblibertyなら↓を読んで。 gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/random.c?rev=1.9&content-type=text/x-cvsweb-markup
667 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:37:24 ] TYPE_0 は線形合同法っぽいけど、他のは・・・何だろ。 これが噂の遅延フィボナッチとやら? とりあえず、TYPE_0 以外では >> 1 はしてるっぽいので安心した。
668 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 04:01:19 ] >>664 で、使ってるライブラリは何なの? MinGW? Cygwin? OSのlibc?
669 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 06:22:54 ] >>668 別に自分の環境のだけのが知りたいわけでもないんで。
670 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 06:43:36 ] そもそもgccとrand()に何の関係もないわな。
671 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 07:04:49 ] ぬ? UNIX/Linux だと OS が提供してるの?
672 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 07:48:20 ] コンパイラとライブラリが別
673 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 07:50:26 ] いや、ライブラリ提供者。
674 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 08:01:54 ] >>671 どんなOSでも、OSのランタイム環境の一部として、配布されている。 開発環境がない実行環境でも動かないといけないから。 今時はほとんどダイナミックリンクだしね。
675 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 08:07:18 ] >>674 OSのランタイム環境ってなんだよw rand関数提供してるOSなんて見たこと無いぞ VBのラインタイムと混同してないか? 半端な知ったかぶりするなら黙ってたほうがいいよ
676 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 08:21:27 ] >OSのランタイム環境の一部として いや、ライブラリ(ry
677 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 08:40:41 ] >>675 UNIXではOS添付のlibc内のrand()を使うのが当然。 SolarisでもLinuxでも*BSDでも、そう。 gcc以外のコンパイラでもrand()は同じ。 MinGWだって、MinGWがrand()を提供しているんじゃなくて、msvcrtが提 供しているわけで、gccとは関係ない。
678 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 09:06:49 ] へー。勉強になった。
679 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 19:38:26 ] int msvcrt_rand() { rand_seed = rand_seed * 214013 + 2531011; return (rand_seed >> 16) & 0x7fff; } int newlib_rand() { newlib_seed = newlib_seed * 6364136223846793005L + 1; return (newlib_seed >> 32) & RAND_MAX; } long glibc_rand() { x=x*1103515245+12345; return x & 2147483647; } それぞれの実装
680 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 19:47:10 ] glibc は何でいつまでもこんな糞実装なんだろう? 右シフトもしないなんて。
681 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:09:27 ] >>680 互換性
682 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:12:47 ] RAND_MAX を変えるのは流石に困るが、 乱数アルゴリズムに依存したコードなんて書いてる奴がいるのか・・・。
683 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:30:56 ] >>682 つ モンテカルロ法 乱数のアルゴリズムつーか、質が問題
684 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:32:34 ] つ[再現性]
685 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:33:23 ] 質が良くなる分には問題ないと思うけど。 というか、モンテカルロ法に rand を使う時点で問題がある気もする。
686 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:36:36 ] そんなに再現性が欲しいなら自前で実装しそうなんだがなあ。
687 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:45:00 ] だよなあ
688 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:49:10 ] 結局はしょっぱいプログラムの尻拭いってことか。
689 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 23:58:56 ] >>679 man読むとこんなの使ってないってはっきり書いてあるんだけど glibc
690 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 00:06:07 ] 質じゃなくて、性質に依存している。 性質が明記してあるのだから当たり前。
691 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 13:43:44 ] 擬似乱数 ttp://pc11.2ch.net/test/read.cgi/tech/1146071975/l50
692 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 13:19:01 ] ファイルスコープで extern int a = 0; とか書くと g++ 4.0.1 だと警告出るのな。 まあそれはいいんだけど、なぜか 2 度も同じ警告が出る。 これはバグと言っていいんだろうか。
693 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 06:59:55 ] 4.2きたね。 まだ正式リリースじゃないっぽいけど。
694 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 07:20:08 ] >>692 ヘッダに書いてるの? ソースは分割してるの? その定義が使われている .c ファイルは何個あるの?
695 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 07:35:16 ] やればわかる。 .c 1個のみ。
696 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 15:10:49 ] 4.2ちょっと試してみたけどやっぱりあんまり速くなってなかった。 というか遅くなってた。 4.1.2と同じオプションでコンパイルしただけだけど。
697 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 15:35:33 ] コンパイル速度が遅くなったのか。 それとも実行速度が遅くなったのか。
698 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 15:53:10 ] 実行速度だよもちろん。 -O3 -fomit-frame-pointer -march=pentiumpro くらいしか指定してないけど。
699 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 16:34:39 ] コンパイル速度の事かと思った。
700 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 17:03:08 ] コンパイル速度が速いに越したことは無いが そもそも実行速度が速くなればフィードバックするっしょ
701 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:19:15 ] May 13, 2007 GCC 4.2.0 has been released.
702 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 03:17:36 ] >>698 今時pprowmarch=nativemtune=nativeでやってみたら。
703 名前:デフォルトの名無しさん [2007/05/18(金) 15:56:09 ] openmpは反則的な速さだ
704 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 20:22:05 ] gcc 4.3.0 まだー?
705 名前:デフォルトの名無しさん [2007/05/22(火) 21:29:58 ] 3.4.2 を使っている人いますか?
706 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:05:21 ] います。
707 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:27:07 ] 1.36.3を使っている人いますか?
708 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 19:55:53 ] います。
709 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 05:17:05 ] 2.95.xを使った事のないひといますか?
710 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 07:10:41 ] います。