[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 04/06 12:52 / Filesize : 164 KB / Number-of Response : 765
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

GCCについて part8



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

577 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:12:17 ]
>>572-573
なのこの頭の悪いしったか連中…
libcがGPLのときのバイナリと混同でもしているのか?

578 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 05:15:05 ]
4.4がstage3になったのか。
リリースは来年ですかねえ。

>>577
libgccが例外なしGPLとか。




579 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 06:12:30 ]
In addition to the permissions in the GNU General Public License, the
Free Software Foundation gives you unlimited permission to link the
compiled version of this file into combinations with other programs,
and to distribute those combinations without any restriction coming
from the use of this file.

580 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:32:00 ]
GNU一般共有使用許諾における許容に加えて、フリーソフトウェア基金はこのファイルのコンパイルされたバージョンを他のプログラムへの組み合わせにリンクして、このファイルの使用から無制限に来るそれらの組み合わせを広げる無制限な許可をあなたに与えます。

581 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:30:47 ]
しかし、このスレは定期的にGPLの話がでるな。

とりあえず、

・GLPのソースを含んだ実行ファイルから利益を得ることは制限されない。
・ただ、ソースを見せろと言われたら全て見せなくてはならない。
・それは不便だからLGPLがあり、その場合は以下の条件を満たせばソースを
 見せる必要はない。
・使用しているLGPLなソースを第三者が修正して、再度、配布しているもの
 と同等の実行ファイルを作成出来なければならない。
・ダイナミックリンクの場合は特になにもする必要はないが、
 スタティックリンクの場合は、リンクに必要なオブジェクトファイル
 (具体的には、*.o)を提供しなければならない。
・同等の実行ファイルを作成出来ることが必要という縛りがあるので、
 LGPLだからと言ってこっそりコピペするのは(・A・)イクナイ!!
 (結局ソースを提供しなければ同等にならない可能性があるので。)

と理解している。

582 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:37:10 ]
GPLのプログラムがLGPLのライブラリを読み込んだとき、
LGPLのプログラムのソースの公開の義務は発生しますか?

583 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 01:01:47 ]
GPLのプログラムとリンクした時点で、ライブラリもGPLになります

584 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 01:42:31 ]
>>583
なんですとぉ!
自作ツールでアーカイバプロジェクトの
スタティックライブラリをリンクしたとする
自分のものでもないしソースもないけど勝手にGPL?

d3d9x.lib とかスタティックライブラリじゃん
困らね?

585 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:12:44 ]
おいおい、めちゃくちゃだな。
>>582
GPLのプログラムもLGPLのプログラムもソースを公開する義務がある。
悩む必要はまったくない。公開してくれ。

>>584
その自作ツールのライセンスはなんだ?
ソースを公開したくないんだったら、LGPLのライブラリをリンク
してれば大丈夫だ。ライブラリがGPLの場合は無理。

> d3d9x.lib とかスタティックライブラリじゃん
> 困らね?
それはまた違うラインセンスになってるだろ。
詳しくは知らんが、それをちゃんと調べるべき。




586 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:38:31 ]
>>584
全体をGPLにできる場合のみ、GPLのコードを基に著作物を形成・複製・頒布することが許諾される
条件を満たせないなら、GPLの使用許諾は得られない

587 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:26:44 ]
>>584
勝手じゃないだろ。使うソフトウェアのライセンスは読もうよ。


588 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:43:21 ]
非GPLなプログラムからGPLなライブラリを使うときは
非GPL部分とGPL部分とでプログラムをわけて、
ソケット通信をすればおk

まあGPL部分は諦めて公開する必要があるけど
どうしても非公開にしたいコアな部分は非GPLにできる。

589 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 05:51:49 ]
>>584
いや、d3d9x.libってCygwinかなんかの?LGPLなの?
困るんならMSのライブラリとコンパイラ使いなよ。
または、d3d9x.lib相当の機能は、自分で作らないと。

他人の成果物使ってんだからさ。
ライセンスに従えない人間に使われるのてむしろ困るのは、
ライブラリを作ってる側だし。

590 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:03:04 ]
>>588
そのソケット通信は確実に白なの?
前にそんなことが議論になったみたいだけど、
結論がどうなったか知らないんで。


591 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:42:28 ]
>>588の例だとGPL部分が不可欠ならばリンクしてなくても
派生物としてソースを公開する必要があるという議論だったと思う。

>>589
プロプライエタリなOSにGNUな開発環境を存在させるため
OSが提供するライブラリに関してはプロプライエタリでもGPLの公開義務の
対象外。

592 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:43:50 ]
分かりにくいなぁ。GPLって。
このライセンスは、GNUが本来目指していた目的に合致するのだろうか・・・・

593 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 08:30:23 ]
本来の目的って、すべてのソフトを未来永劫にわたってオープンソース化する
超過激思想だぞ? だからこそこんな感染性のあるライセンスにしたわけで。

594 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:01:14 ]
そのへんは「オープンソース」界隈の連中が意図的にか天然か
勝手に話を混ぜ込んでいたりするからなw

595 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:34:48 ]
>>582
*フリーではないライブラリを利用するフリーソフトウェアを書いているのですが、GPLを適用した場合どのような法的問題が発生するでしょうか?
www.gnu.org/licenses/gpl-faq.ja.html#WritingFSWithNFLibs

*「単なる集積」と「二つのモジュールを一つのプログラムに結合すること」の違いは何ですか?
www.gnu.org/licenses/gpl-faq.ja.html#MereAggregation



596 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:38:50 ]
>>592
根本はとってもシンプル
結局はバイナリ公開したければソース出せボケ
いろいろな抜け道を塞ぐために条文追加するはめになっただけのこと

ストールマンの最初の動機と何も変わってないw
思想先行どころか実利的なGPL

597 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:55:43 ]
>>591
d3d9x.libはOSのライブラリってこと?スタティックなライブラリが?
話が唐突で全然意味がわからん。
てっきり、GCC用のLGPLなライブラリだと思ったんだが。

あと、GPLならGPLが適用されるし、LGPLならLGPLが適用されるっしょ。
OSがプロプラとか関係無い。

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 でググると同様の話がゾロゾロ出てくる。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<164KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef