- 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
- 598 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:54:20 ]
- すくなくともd3d9x.libについて調べればそういう話は出てこないとおもう。
簡単に言えば、Direct3Dについてくる、MSの3Dライブラリみたいな。
- 599 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:26:57 ]
- 例えば、GPLな数値計算ライブラリと
Direct3D の組み合わせで計算結果を視覚化するソフトウェアがあるとする このソフトウェアを α とする α 内で使用されている D3DX* 系の関数は DirectX SDK の d3dx9.lib スタティックライブラリに含まれている スタティックライブラリに含まれる部分のソースが無いので 出来上がった α を頒布することはできない これで合ってる?
- 600 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:37:12 ]
- >>591
それが詭弁に過ぎないことは世の中のWebブラウザを見てればわかる
- 601 名前:599 mailto:sage [2008/09/07(日) 21:11:52 ]
- >>599はgcc関係なくて、GPLについてだけなのでスレ違いっぽいですね
- 602 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:23:56 ]
- >>600
わからん。具体的には?
- 603 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:46:58 ]
- mingwのgccがなかなか4系列にならないのはなんで?
- 604 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 22:11:01 ]
- >>603
4系列だとpchのテストが通らないからとか?
- 605 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 05:30:18 ]
- >>598
あー、d3dx9.libの事を言いたかったのか。 てっきり、d3d9x.libっていうCygwin用のdllラッパーか何かかと思った。 じゃあ、>>584は何を困ってんだ?自作ツールを公開したいってことか?
- 606 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 13:47:08 ]
- d3dx9.lib ってスタティックリンクライブラリなの?
DLL用インポートライブラリじゃなくて?
- 607 名前:デフォルトの名無しさん [2008/09/08(月) 13:48:05 ]
- スタティックリンクライブラリ
- 608 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 14:24:42 ]
- そうなんだ。Thx!
- 609 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:32:03 ]
- GCC4.4 が stage 3 になったな
- 610 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 04:06:10 ]
- どちらにしろOSの機能を使うためにOSベンダが提供しているものは使って大丈夫。
- 611 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 05:53:39 ]
- GPLの何項にのってるの?
>どちらにしろOSの機能を使うためにOSベンダが提供しているものは使って大丈夫。
- 612 名前:デフォルトの名無しさん [2008/09/09(火) 07:41:32 ]
- >> 611
ちょっと前のレスも読めないの?
- 613 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:00:16 ]
- >>612
>>611はGPLを読んだことすらないだろ。読んだことがあるなら 述べる主題によって項が立てられているのだから>>611みたいなこと いちいち聞くまでもないと理解しているはずだから。
- 614 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 22:04:22 ]
- 組込み以外で、何度もオブジェクトを小グループ単位で
スタティックリンクし、最後にlibxxxx.aを作る利点というと 何が思いつきますか
- 615 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 01:15:36 ]
- libxxxx.aを作るのはスタティックリンクちゃいますえ
- 616 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 01:21:56 ]
- libxxxx.aの中の関数を置き換えられる
- 617 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 21:01:57 ]
- C++のコードを-Weffc++を付けてコンパイルしたら、警告が出まくった男がいたんですよー。
よく見るとSTLのヘッダーファイルから発生してるやないかー 俺のせいちゃうやんけー 男は黙って ただの配列
- 618 名前:デフォルトの名無しさん [2008/09/28(日) 18:19:32 ]
- export CPPFLAGS="-fprofile-genereate"
export LDFLAGS="-fprofile-genereate" make PGOつかいたいんですけど、 上のとおりにやったらcc1.exeっていうのが -fprofile-genereateなんてしらねーよ!って怒るんです。
- 619 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 00:39:23 ]
- そりゃそうだろ。
- 620 名前:デフォルトの名無しさん [2008/09/29(月) 03:46:49 ]
- gcc (GCC) 4.1.2(Linux)では、
構造体の代入はmemcpyを呼んじゃうもんなんですか? 32bitマシンでは4バイトずつのコピーを期待していたので。
- 621 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 05:55:21 ]
- >>620
gcc 4.3 or laterを使いましょう。
- 622 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 07:48:17 ]
- gcc って、-g で最適化(-O2など)が阻害されるようなことがあるの?
ずっとないと思ってたけど、気になってきた。
- 623 名前:デフォルトの名無しさん [2008/09/30(火) 08:33:04 ]
- >>619
何でですか?
- 624 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 08:34:55 ]
- >>621
ありがとうございます。試してみます。
- 625 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 08:38:57 ]
- >>618
-pg でどう?
- 626 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 09:10:50 ]
- >>623
目が腐ってるの? 頭が腐ってるの?
- 627 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 09:29:35 ]
- genereateってどういう意味だw
- 628 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 11:04:06 ]
- ニートだから最後は延ばしたくなるんだろうな。
- 629 名前:Google先生 mailto:sage [2008/09/30(火) 11:07:56 ]
- fprofile-genereateの検索結果 2 件中 1 - 2 件目 (0.52 秒)
もしかして: fprofile-generate
- 630 名前:デフォルトの名無しさん [2008/09/30(火) 15:12:33 ]
- よくみたらスペル違うじゃないですか!!!!!!!!
↓のコピペしたから気付きませんでした>< d.hatena.ne.jp/pyopyopyo/20060311/p2
- 631 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 17:12:30 ]
- >>622
stripしてdiffしたら
- 632 名前:ニート009 [2008/09/30(火) 22:34:27 ]
- stripって何?
- 633 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:47:34 ]
- 実行ファイルからデバッグ情報を取り除くこと
- 634 名前:デフォルトの名無しさん [2008/11/03(月) 13:41:03 ]
- sh4-linux を組み込む クロス環境を作成中で、
binutils-2.19 ← 成功 gcc-3.4.6(ブートストラップコンパイラ) ← 成功 glibc-2.5 ←ここでこける 完全なsh4-gccの構築 ← ここへはたどり着けない CC=sh4-linux-gcc ac_cv_type_long_double=no ../glibc-2.5/configure \ --host=sh4-linux --prefix=/root/sh4/tools/sh4-linux/ \ --enable-add-ons=linuxthreads --with-headers=/root/sh4/tools/include/ \ --disable-sanity-checks --disable-shared | tee sh4config.log configureは成功するよ makeすると・・・・ /root/sh4/tools/bin/../lib/gcc/sh4-linux/3.4.6/../../../../sh4-linux/bin/ld: cannot find -lgcc_eh 上のエラーが出てmakeが途中でストップ。 gcc-ehとはldによって呼び出されるもの?と思いました。 どのような役割があるのでしょうか? gccコンパイルする時に生成されなかったのかな? 既存のshクロスrpmをインスコすればいいのですが、クロス環境の学習目的です。 参考書籍は「組み込みlinuxシステム構築」を読んでます よろしくおながいいたします。
- 635 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 16:03:02 ]
- crosstoolとかcrosstool-NGのスクリプト読んでみるといいよ
- 636 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 16:41:20 ]
- >>634
make lib
- 637 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 17:26:06 ]
- svn.exactcode.de/t2/trunk/package/base/glibc/gcc_eh.patch.cross
- 638 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:40:27 ]
- まだうまくいかないけど、参考になりました。
コンフィグオプションももっと調べないと・・・
- 639 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:15:10 ]
- gcc の引数って順番の依存あります?
gcc hoge.c mylib.a と gcc mylib.a hoge.c ってかいたとき、Darwin の gcc だとどちらの書き方でも a.out ができるんですが、 Ubuntu の gcc だと、後者の書き方ではリンクエラーになるんです。
- 640 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:22:44 ]
- 順序に意味はあります。
リンク時の名前解決において、先に現れたモジュールで未解決の名前を、 後で現れたモジュールで解決するので、これが逆になって、 先に現れたモジュールに定義があって、後から参照する形になると、 名前が解決できなくなります。
- 641 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:06:49 ]
- >>639
Darwinのgccはldとは別のリンカ使ってる。(dyld) DarwinはELFやBSD a.out形式じゃないから。(Mach-O)
- 642 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 12:58:43 ]
- >>603-604
じゃあコンパイラとしての能力には深刻な問題があるわけではない?
- 643 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 18:48:12 ]
- >>642
pchの問題は4.3だと解決してるみたい。
- 644 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 20:34:44 ]
- OS CentOS4.6 i386
gcc 3.4.6 やりたいこと binutils-2.10.tar.gz gcc-2.95.2.tar.gz glibc-2.1.3-armlinux.tar.gz を使ってクロス環境を作りたい bintilをビルドする時に ./configreでホストのタイプを設定したいのですが、Centの場合 --host=i386-unknown-linux でいいのでしょうか?
- 645 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 20:42:29 ]
- binutilsとgccはとくにhostの指定はしなくてもいいけど
- 646 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 12:39:07 ]
- 書くとすれば、i386-pc-linux-gnu だよな。
- 647 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 17:08:01 ]
- gcc -dumpmachine
- 648 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 01:48:00 ]
- OS:CentOS
コンパイルすると 無効なプリプロセスディレクティヴ #! ってでるんだ 誰か解決策を教えてください。
- 649 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 02:09:29 ]
- エスパー求む
- 650 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 02:23:45 ]
- シェルスクリプトをコンパイルしてはいけません
- 651 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 02:28:22 ]
- 実は1行目が#!ccだったりしてw
- 652 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 15:44:40 ]
- g++のコンパイルが異常に遅くなってしまってるんですが、
何がボトルネックになっているのかを調べる(コンパイラ自身のプロファイルみたいなの) はありますか? コンパイルしているのは、ユニットテスト的なテストプログラムで、 長さも100行程度です。ひたすら関数の結果をチェックしまくるみたいなもので、 マクロを使いまくっているんですがそれが原因かなぁ・・・
- 653 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 15:45:39 ]
- 書き忘れましたが、その100行程度のユニットテストプログラムで、
コンパイルには3分くらいかかってます。 本体プログラムよりはるかに長い・・・orz
- 654 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 15:51:45 ]
- 可能なら前半と後半で2つのモジュールに分けて、どっちで遅くなるか調べる。
それを繰り替えして突き止めるとか。最終手段かもだが。
- 655 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 16:01:17 ]
- -Eだとどれくらいかかってるんだろ?
- 656 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 16:08:56 ]
- 1. -E, -S, -cでそれぞれの時間を確かめる。
2. cc1内部は-fdump-rtl-allで出力ファイルのタイムスタンプを見る
- 657 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 16:32:33 ]
- >>654 >>655 >>656
あざっす。いまからいろいろ調べてみます。
- 658 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:10:27 ]
- templateでたらいまわし関数みたいなものを作っているとかだったり。
- 659 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:21:19 ]
- >>658
テンプレートをガンガン使ってるなら、まぁ遅くなっても納得するんですが・・・ コンパイルしているプログラムが、 ASSERT_TRUE( .xxxx ) ASSERT_TRUE( yyyy ) みたいなものが延々と続いているだけのプログラムなので不可解なのです
- 660 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 18:25:36 ]
-
time コマンドで実行時間を測定しました。 -c 81.34s user 12.30s system 97% cpu 1:35.78 total -S 82.63s user 11.62s system 99% cpu 1:34.66 total -E 0.36s user 0.17s system 99% cpu 0.533 total それぞれ一回しかやってないのでちょっと揺れがありますが… つまり-Eは一瞬で、asに時間がかかっているという解釈で正しいんでしょうか? ひょっとしてプリプロセッサによってファイルが膨れ上がっているのかとも思いましたが、 他のファイルでも-E 後の行数はほぼ同じだったので、単純に行数が原因ではないようです。 (すべて 50k〜60k行の範囲内) 次に-fdump-rtl-allを付けてコンパイルしようとしましたが… ディスク領域不足でコンパイル中断しましたとか出る上に30分経ってもまだ終わらない…
- 661 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 18:30:50 ]
- アサートの数を減らしてみて
どこを減らせばどのくらい時間が変わるか見てみたら?
- 662 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 18:35:33 ]
- > つまり-Eは一瞬で、asに時間がかかっているという解釈で正しいんでしょうか?
どう見てもcc1だろ時間かかってるのは。 -Q ってオプションがあるので試してみ。
- 663 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:00:41 ]
- -Sの時間が-cよりかかってるってことは、コードが相当大きくなってる?
- 664 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:51:11 ]
- プリプロセスだけして出てきたコードはどれくらいになっとるかね
- 665 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:20:12 ]
- どんな最適化しているの?
でかいファイルでインタープロシージャルな最適化まで やったら結構重くなるだろ。
- 666 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:34:10 ]
- >>663
これは誤差範囲だと思います。一回しか測定してないので >>662 -Q を試してみます。 #if 0 したりしていろいろ測定してみました。どうも、ASSERT_XXXXの個数と だいたい相関があるようなので、1つ1つのコンパイルが遅いような気配です。 マクロの中身を減らせないかどうか検討中です。
- 667 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:35:40 ]
- アサートマクロの実装がマズかったりすんじゃないのかね。意外と。
- 668 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:37:50 ]
- >>664
プリプロセス後のコードは50k行程度です。 一般的に見て多いのか少ないのかよくわからないですが、 他の、数秒でコンパイルが終わるような同列のソースファイルも 行数はさほど変わらないので、行数そのものは関係ない気がしています >>665 autoconfまかせだったので、-O2の最適化がかかってました。 テストコードだし、-O0にしてみます
- 669 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:40:14 ]
- >>668
ヘッダファイルの部分を除いた行はどのくらい? あと、マクロは常に1行に展開されるので、 単に行数だけ見るより、バイト数見た方がいいかもしんない。
- 670 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:24:47 ]
- >>660
システムタイム大きすぎ!ほとんどI/Oだろ。 -vでcc1の引数見て、テンポリファイルの中見てみ。 超巨大になっているに違いない。 もしかしてtemplate引数に正定数の荒しで特殊化爆発?
- 671 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 00:29:25 ]
- -pipe してみて改善するようなら、特殊化の嵐でオブジェクトサイズがとんでもないことになってて
I/Oで時間喰ってるんじゃない?コンパイル中にメモリとスワップがどうなってるか見てもいいかも。 今時のマシンでcc1plusに80秒以上とか・・・。gccのinsn-*.cのコンパイルはそのくらいかかってたけど。
- 672 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 08:34:32 ]
- gdbでさ、
struct foo; struct foo { ... }; と構造体の前方宣言があると、先に見つけた定義を見てしまって構造体の中身を print でダンプできず <incomplete type> になってしまうのだけど、結局 これって解決不能なの? 毎回同じ構造の別名構造体をダミーで仕込んで、変数ごとにキャストして アクセスとかって超面倒なんだけど。
- 673 名前:670 mailto:sage [2008/12/22(月) 09:53:03 ]
- まさに的を射たと思ったんだが反応がない(ワラ
- 674 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 15:45:05 ]
- >>673
反応遅れましたが、前にも書いているとおりテンプレート一切使ってないんです。 (boost::scoped_ptrは使ってますが、それはほかの異常ない部分でも一緒なので) 特定のどこかが遅いということではなく、調子のってマクロを使いすぎて ソースの量が爆発しているような気配です。 地道にマクロを削って最適化を抑止して頑張ってます。
- 675 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 23:50:26 ]
- >>672
ちょっと簡単な例でやってみたら別に問題ない。 具体的なサンプルコードよろ。
- 676 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:02:54 ]
- gdbはinfoのどこかに、関数のプロトタイプ宣言書くなら、
ファイルのはじめの方に書きなと書いてあって笑った記憶があるが…
- 677 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:10:56 ]
- >>675
具体的なコードはちょっと出すの難しい。Linuxの動作を gdb -c /proc/kcoreで追いかけてたら途中で<incomplete type>になる構造体が 出てきたという経緯で、自分のコードじゃないから。 - stackoverflow.com/questions/232744/how-to-print-incomplete-type-variable-in-gdb - sourceware.org/ml/gdb/1998/msg00116.html あたりがソースかな。gdb struct incomplete type でググると同様の話がゾロゾロ出てくる。
- 678 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:16:19 ]
- >>677
- sourceware.org/ml/gdb/1998/msg00116.html 1998年? お前バカか? そんな古い断片の情報で>>672みたいな結論出すなよ。 その状況は今のgcc/ldでは起こらない問題。 >>675というのはカーネルモジュールとか 特殊なリンク環境で起こるんじゃないか? あと、 - stackoverflow.com/questions/232744/how-to-print-incomplete-type-variable-in-gdb は前方参照のことは何も書いてないぞ。 本当に>>677で見たコードには前方参照があったのか? 単にopaqueな参照だったんでは?
- 679 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:23:39 ]
- >>678
古い記事を出してしまったのはすまない。 最近(2006年あたり)でも類似の話があるので出してしまったのだけど、 ちょっと込み入った話なので質問撤回します。お騒がせしてすみません。
- 680 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:18:11 ]
- EclipseからMinGWを呼び出してC言語のプログラムを書いているのですが、
"-ansi"オプションを指定しても、なぜかC99の機能が使えて困っています。 具体的には、配列の動的確保がなぜかできます。(↓のような機能) int i = 10; int array[i]; 他のC99の機能(新しいコメント分の書式やfor文での変数初期化)は無効になっていますので これはバグなんでしょうか? ちなみにgccのバージョンは、「gcc (GCC) 3.4.5 (mingw-vista special r3)」です。
- 681 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:34:24 ]
- >>680
-std=c89
- 682 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:04:32 ]
- >他のC99の機能(新しいコメント分の書式やfor文での変数初期化)は無効になっていますので
むしろこっちの方がバグなんじゃ
- 683 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:07:37 ]
- >>682
C89+GCC拡張なんじゃね
- 684 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:11:42 ]
- -ansi 指定してもその程度なのか。
やはり -pedantic-errors -Wall をつけないとダメなのか。
- 685 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:19:34 ]
- >>681
できました!!ありがとうございます!
- 686 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:27:04 ]
- バグ呼ばわりか
- 687 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:33:50 ]
- 他のコンパイラで使う時に困るので、けったいな独自拡張はやめて下さい。
- 688 名前:680 mailto:sage [2009/01/18(日) 16:38:49 ]
- >>681
できたと思ったのですが、またもや可能になってしまいました。 どうやらMinGWではなく、Eclipseのプラグインにバグがある気がします。 お騒がせいたしました。
- 689 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:40:10 ]
- だからpandanticだって
- 690 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:46:42 ]
- >>688
-std=c89 -pedantic-errors -Wall
- 691 名前:680 mailto:sage [2009/01/18(日) 16:52:34 ]
- >>689-690
ありがとうございます、今度こそ表示されたようです。 レスも良く読まずにすみませんでした。
- 692 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:02:14 ]
- 全ては自分以外のバグが原因だからなw
- 693 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:21:14 ]
- しかもレスもよく読まない。
- 694 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:07:08 ]
- 4.3.3
- 695 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:57:11 ]
- gcc 4.3.3のビルド・インストールをしたのですが、
間違えて、prefix=/usrにしてしまっていたのですが、 一度、アンインストールしたいのですが、 どうすればいいでしょうか?
- 696 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 05:52:47 ]
- 以前入れてたバージョンを再ビルドすればいいんじゃねえの?
- 697 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:56:31 ]
- >>695
GCCにあったかどうか記憶してないけど make uninstall が効くかもしれない
- 698 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:29:08 ]
- >>695
もう一回make installして、何をinstallしたかファイルに保存 ↓ 手作業 cppに依存しているものも結構あるから、 普及する前にrebootしない方がいい。
- 699 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:48:45 ]
- その作業を自動化するスクリプトって書けそうだけど
- 700 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:13:35 ]
- INSTALL変数を上書きすればいいと思うけど、
まあ結局、目でチェックする必要あるから。
- 701 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:26:38 ]
- /usrにある既存環境上書きしてるはずだから、単純にアンインストールすると酷い目に合いそうな気が。
1) インストールされたファイル/ディレクトリの一覧を作る。 2) 標準のパッケージでインストールされるファイル/ディレクトリの一覧を作る。 3) 標準のパッケージを再インストール。 4) (1)に有って(2)に無いファイル/ディレクトリを消す。 これくらいやる必要あるんじゃない?
- 702 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 23:04:32 ]
- >>698にあるcppと
C++もインストールした場合のlibstdc++くらいじゃないかな。 システムのクリティカルなところに使われてる可能性あるのは。 ld, libcは入ってないし、crt関係はsoじゃないし。
- 703 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 07:01:03 ]
- >>695
ちなみにGCCのmake uninstallは効かない。それとprefix=/usrだったらまずディストリ標準の/usr/bin/gcc同じくg++,c++や cppやgcjなどが完全に上書きされてる。フォートランは違う名前かもしれん。 一番問題は多分/usr/libのlibstdc++が上書きされてる点かな。下手するとgcc4.3入れたその前後にmakeしたアプリなどが 動かなくなるかも。てか運が悪いと既にそこへ入れた時点でlibstdc++の関連で動かなくなるアプリとか出るときあるお。 結果から言うと自分で手作業で探して削除した後、再度デフォルトで入ってたgcc系とlibstdc++のパッケージを再インスコ。 ぶっちゃけ手作業で削除しなくても多分gcc系とlibstdc++の再インスコで上書きされるから平気だと思うよ。 ただしgcc系ってのはgcc,c++,cpp,gcj,fortlanあとなんかあったような気がするけど忘れたw まあその辺全部再インスコね。 そうすれば手作業で消さなくても問題無い位復旧できるはず。 まあ違うバージョンのgccは/optとかにインスコしといた方が無難。/optにおいてもldがちゃんと機能してればlib関連は /opt/gcc***/libを見に行くはずだから。
- 704 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 07:52:50 ]
- OS再インストールした方が早かったりしてね。
- 705 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 14:10:12 ]
- 基本的に複数バージョン同居できるようになってるからそこまで大変じゃない。
パッケージからgcc関連入れ直して/usr/include/c++/4.3.3、 /usr/lib/gcc/$target/4.3.3、/usr/libexec/gcc/$target/4.3.3を消せば大丈夫。
- 706 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 05:26:51 ]
- pc11.2ch.net/test/read.cgi/tech/1232029287/350
325>>理由教えて。
- 707 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 08:58:49 ]
- >>706
向こう見に行くの面倒だから、聞きたいポイントを整理して書け。
- 708 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 12:22:48 ]
- お疲れ。
double func(double a, double b){double c; return (a+b);} でreturn (a+b); とc=a+b;return c;の違いは何?
- 709 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 13:12:02 ]
- >>708
浮動小数点な数値のプロセッサ内での保持方法の差だっけ。 どっかのブログでSunの科学計算の手引きみたいなページが紹介されてた。
- 710 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 13:30:28 ]
- 参考にさせてもらいます。
> gcc kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8828.c を、これで修正したら動いた理由が知りたいのですが。 pc11.2ch.net/test/read.cgi/tech/1232029287/350
- 711 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:17:01 ]
- どうやら、fld dword ptr 抜けが原因らしいです。
gcc version 3.4.4 (gcc Win/on Win2000) では、戻り値がdoubleの関数は、return 文の所で 演算していはいけない。必ずglobalかlocalの変数に結果を入れてから、 return 変数名; としないと、いけないようだ。
- 712 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:03:28 ]
- >gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
無問題。
- 713 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:13:02 ]
- gcc に-O3 のオプション付きでなら良いみたい。
- 714 名前:712 mailto:sage [2009/02/07(土) 15:14:01 ]
- つけてもつけなくても8228.cで問題が出ない。
- 715 名前:713 mailto:sage [2009/02/07(土) 15:29:08 ]
- そうですか、こちらのPCはLavie C LC60H 確か32bitです。
exeか、逆アセンブル結果でも、掲示板に張って送ります? -O3 無し =7>===== 00401050 push ebp 00401051 mov ebp, esp 00401053 fld qword ptr [ebp+10h] 00401056 fadd qword ptr [ebp+18h] 00401059 fadd qword ptr [ebp+20h] 0040105C pop ebp 0040105D ret
- 716 名前:712 mailto:sage [2009/02/07(土) 15:53:53 ]
- それの何が問題だと言いたいのか判らない。
--8228.s:total() _total: pushl %ebp movl %esp, %ebp fldl 16(%ebp) faddl 24(%ebp) faddl 32(%ebp) popl %ebp ret -- 確かに-O3つけたらインライン展開されるから関数自体見えなくはなるけど。
- 717 名前:713 mailto:sage [2009/02/07(土) 16:01:34 ]
- fadd した結果が消えて、return値にセットされているか?
fadd の次はpopなので、結果の値が消えるのでは。
- 718 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:03:10 ]
- はぁ? 何を寝ぼけたことを。
- 719 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:04:29 ]
- ・faddした結果はどこに格納されるか
・pop ebpは何をどこに戻すか ・doubleの戻り値はどこに格納されるか 少し勉強してこい。
- 720 名前:713 mailto:sage [2009/02/07(土) 16:28:54 ]
- すみません。
それで、問題はfunction側に有るのでは無くて、call側です。 戻ってきた直後で、ストアじゃなくてロードすると、以前の内容が レジスタから消えます。 -O3 無し 00401400 call 00401050h 00401405 fld qword ptr [ebp-10h]
- 721 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:35:22 ]
- fldはプッシュなんだよ
- 722 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:59:47 ]
- >>720
数多の天才が気付かずに使っているコンパイラのバグを、浅学無能非才のあんたに見つけられるというのか? 思慮が足りないにも程があるぞ。
- 723 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:07:29 ]
- すみません、exe おいておきます。どうぞ参考に。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8840.zip cygwin1.dll version 1005.25.0.0 (0.156 2008-06-12 19:34)
- 724 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:18:27 ]
- Cのソースは?
- 725 名前:723 mailto:sage [2009/02/07(土) 17:23:24 ]
- どぞ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8841.zip
- 726 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:47:35 ]
- で、結局何がしたいんだ?
デバッグだったら一人で勝手にやってろよ。 勿論、その場合はスレ違いだ。
- 727 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:51:49 ]
- gccに-O3オプションは必須か?
- 728 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:53:05 ]
- >>727
質問の意図は? >723の言っていることなら只の世迷言だから無視しておけ。
- 729 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:57:19 ]
- >>714
- 730 名前:711 mailto:sage [2009/02/07(土) 19:05:31 ]
- どぞ
- 731 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:47:18 ]
- ソートでスタック喰いつぶしるような?
- 732 名前:711 mailto:sage [2009/02/07(土) 19:57:07 ]
- 戻り値を一旦変数に代入すれば大丈夫?
354 :325 :2009/02/07(土) 04:54:11 >>326 double a; do{ while((a=total(st[pl])) > x) pl++; while((a=total(st[pr])) < x) pr--; 355 :325 :2009/02/07(土) 05:01:10 >>326 double a; do{ pc = (pl + pr) / 2; if((a=total(st[pc])) == key) return pc; else if((a=total(st[pc])) > key)
- 733 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:58:54 ]
- 浮動小数点演算ではまった話
0xcc.net/blog/archives/000164.html これかな…?
- 734 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:08:49 ]
- いいえ。8828.cがまともに動かないのは自前で実装したクイックソートが腐っている所為。
- 735 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:40:06 ]
- total関数をコメント側のコードにすると動く。
- 736 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:19:06 ]
- 結果がスタック渡しなのに、結果をスタックに書き込んでないからみたい。
- 737 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:47:30 ]
- >結果がスタック渡しなのに
いいえ、FPUレジスタ渡しです。
- 738 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:50:46 ]
- でも、>>720のコードになってる?
- 739 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:30:25 ]
- だから、FPUの勉強してこい。FPUレジスタはFPU内部(と言っても今や単にCPU内部だが)で
スタック上に利用するようになっている。だからfldを繰り返したら複数のレジスタに順に格納されるわけ。
- 740 名前:713 mailto:sage [2009/02/07(土) 22:36:24 ]
- >>733 参考にしました。結局、gcc 3.4.4はdoubleを使うと「ときどき」桁落ちする。
double total(){return (st.ascore + st.bscore + st.cscore);} =7>===== 00401050 push ebp 00401051 mov ebp, esp 00401053 fld qword ptr [ebp+10h] 00401056 fadd qword ptr [ebp+18h] 00401059 fadd qword ptr [ebp+20h] ;;結果はFPUスタックに置く(80bit値) 0040105C pop ebp 0040105D ret if(st[pc].number == key) 00401153 call 00401050h 00401158 fld qword ptr [ebp+10h] ;;keyメモリ内容をFPUスタックに入れる(sp=sp+1)(64bit値) 0040115B fxch st(1) 0040115D fucompp ;;数値比較(80bit値 : 64bit値) double a; if((a=st[pc].number) == key) 00401153 call 00401050h 00401158 fstp qword ptr [ebp-18h] ;;メモリ内容をFPUスタックから出す(sp=sp-1)(64bit値) 0040115B fld qword ptr [ebp-18h] ;;メモリ内容をFPUスタックに入れる(sp=sp+1)(64bit値) 0040115E fld qword ptr [ebp+10h] ;;keyメモリ内容をFPUスタックに入れる(sp=sp+1)(64bit値) 00401161 fxch st(1) 00401163 fucompp ;;数値比較(64bit値 : 64bit値)
- 741 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:22:43 ]
- return (st.ascore + st.bscore + st.cscore);
と double a = (st.ascore + st.bscore + st.cscore); return a; では、吐く汗のコードに違いがあるのですが、何が違うのでしょうか?
- 742 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:30:28 ]
- return (st.ascore + st.bscore + st.cscore);
結果の戻り値の数値が80bit表現 double a = (st.ascore + st.bscore + st.cscore); return a; 結果の戻り値の数値が64bit表現
- 743 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:34:10 ]
- なるほど。なんとなく、わかりました。
- 744 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:03:32 ]
- GCC関係なく、x86一般の話のようにしか思えない。
- 745 名前:706 mailto:sage [2009/02/08(日) 02:51:15 ]
- >>744 何告白ってるんだ。
ソフト板 pc11.2ch.net/software/
- 746 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 04:22:49 ]
- うぜえ
- 747 名前:デフォルトの名無しさん [2009/02/14(土) 06:48:19 ]
- gcc -S でコンパイルしたときにコンパイラオプションをアセンブラソースに出力する
オプションってありますか?
- 748 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 07:44:24 ]
- -fverbose-asm
- 749 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 08:43:07 ]
- >>748
ありがとうございます
- 750 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:15:00 ]
- gcc *.c -S
とするとAT&T Syntaxで*.sができますが、Intel Syntaxで出すことはできますか?
- 751 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 02:40:48 ]
- -masm=intel
間違った命令を吐いてしまうという噂を聞いたことがある。 最近の状況はわからん。
- 752 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 11:18:14 ]
- >>751 へー。知らんかった
- 753 名前:750 mailto:sage [2009/03/06(金) 23:58:24 ]
- >>751
tnx
- 754 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:03:18 ]
- 生成コードが心配ならgccには普通にオブジェクト作らせて、objdumpに
欲しい方のシンタックスでダンプさせるのはどう?
- 755 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:37:29 ]
- そっちもおかしかったりして。
てことはないと思うが、読みにくくなるからなあ。
- 756 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 05:26:47 ]
- そもそも噂ってなんだよ?w
毎週snapshotが出て、全世界で最も多く使われているコンパイラが、 判りやすいbugをいつまでもほっとくわけ無いだろ。 最も多く使われている筈のOSは、10年もディレクトリ掴んだまま 放さないbugが取れなくて、たまにイライラするけどな。
- 757 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 09:48:26 ]
- masmバックエンドって使われてないだろうし
- 758 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 11:41:18 ]
- 組み込み系で結構使われてますよ。> masm=intel
まあnasmでなんとかなる昨今ですが。
- 759 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 13:12:36 ]
- >>767
なれりゃAT&Tでも特に困らんしなあ。 あれは完全におまけ機能だよなあ。 >>768 たぶんそのmasmは関係無いと思う。
- 760 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:14:02 ]
- >>759
gcc -masm=intel → 組み込み評価ボードのアセンブラ(by Intel)
- 761 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:13:31 ]
- >>759
767と768に期待
- 762 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:59:10 ]
- 64bit環境で
gcc -O2でコンパイルする場合と gcc -m64を付ける場合でゲロったバイナリの内容って異なることは ありえないですよね?
- 763 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:22:11 ]
- ありえるのでは?
gcc -O2とgcc -m64 -O2が違うのはあり得ないというのならともかく。
- 764 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 18:24:57 ]
- 4.5
|

|