[表示 : 全て 最新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

2 名前: ◆3.JjF77I26 mailto:sage [2007/10/13(土) 00:58:22 ]
2get

3 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 01:09:51 BE:328057362-2BP(100)]
>>1

4 名前:デフォルトの名無しさん [2007/10/17(水) 11:28:31 ]
x86です。

double d = 0.3; int i;
i = d * 1000;

とすると i=299になります。

d = d * 1000; i = d;

とするとi=300になります。 Macのgccで試したら300になるので生成したコードを調べると
SSE2インストラクションを使ってました。試しに-msse2でコンパイルすると両方とも300に
なりました。 gccは3.2.2, 3.3.5, 4.1.1と試しましたが全部同じです。

manに書かれている以下の文が関係しているのでしょうか?

... -msse2 ...

The resulting code should be considerably faster in the major-
ity of cases and avoid the numerical instability problems of
387 code,

この問題をどこか詳しく説明している文書はありますでしょうか? 


5 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 11:56:17 ]
x86は浮動小数点数レジスタが80ビットあり、演算はこの大きさで行われる
メモリに書き戻されるタイミングで64ビットに切り捨てられるのだが、
コンパイラの最適化の具合によって
メモリに書き戻されるタイミングが変わり、計算結果が変わることがある

6 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 17:19:41 ]
floatだと300になるんだよなぁ。
最初の方で
double d = 2.99999999999999988897769753748434595763683319092e-1;
float f = 3.00000011920928955078125e-1;
に変換されていた。
-O0だとハードウェアが使うそのままの形で渡すから、マシン依存ってことかな?
-O2だとmsse2じゃなくても300になった。
gcc.gnu.org/bugs.html#known だね。

gccはrtlとか出てきたらよく分からんなぁ。GIMPLEはわかりやすいんだが。。。

7 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:24:51 ]
GCC用のソースをVCでコンパイルできるようにしてたときにちょっと引っかかったんだけど、
構造体の初期化でメンバ名を指定できるのと、その他の初期値を指定できるなんて
初めて見たよ。
たしかに便利っちゃぁ便利だけど...

8 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:39:32 ]
全然普及しないC99

9 名前:4 mailto:sage [2007/10/17(水) 19:41:08 ]
>>5 >>6
大変参考になりました。 ありがとうございます!


10 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 06:39:02 ]
>>7
VCってC99サポートしてないの?



11 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 06:52:22 ]
してないよ

12 名前:デフォルトの名無しさん [2007/10/18(木) 16:55:33 ]
低反発枕が凄い硬くて反発力が激しいのですが何とかなりませんか。

13 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 18:13:06 ]
知るか

14 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 18:51:03 ]
>>7
コンパウンドリテラル

15 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 16:41:06 ]
>>7
designated Initializerか
>>8にもあるけどC99で取り入れられてるな

16 名前:デフォルトの名無しさん [2007/10/20(土) 08:33:01 ]
max-inline-insns-singleはどのようなときに設定するものなのでしょうか?

17 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 19:19:15 ]
>>6

いや、0.3=3/10は2進数では無限小数になって丸め誤差が出ているだけでは?

0.3 = 0.10011001100110011001100…

18 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:54:41 ]
>>17 0.010011001・・・

19 名前:デフォルトの名無しさん [2007/10/25(木) 06:16:18 ]
gccのプリプロセッサが、ヘッダファイルをどのディレクトリから探しているのか、探している様子を
画面表示するオプションは無いでしょうか?

gccの-iprefixオプションを使うと、途端にいくつかの標準ヘッダが見付からなくなる現象で悩んでます。


20 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 09:08:33 ]
-vじゃだめなの?



21 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 07:52:36 ]
GCC 4.3.0 Status Report (2007-10-25)
gcc.gnu.org/ml/gcc/2007-10/msg00441.html

stage3まではサクサク進んできたけど、現在バグ取りで膠着状態
まだまだ使える状態じゃないっぽい

22 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 10:29:55 ]
コード生成以後もいろいろ大変なんだろうけど、
C++やJavaみたいに、言語規格自体が大きくて、
しょっちゅう変更される言語も含まれるから、
リリースがどんどん重くなりそうだね。

libstdc++なんか、言語処理系のバージョンとの関係が切り放せないし。

23 名前:デフォルトの名無しさん [2007/10/27(土) 22:51:53 ]
C++は変更が2009年までに本当に終わるのかどうかが心配されているわけだが。。。


24 名前:デフォルトの名無しさん [2007/10/27(土) 22:55:55 ]
gcc -gと-ggdbと-g3の違いは何でしょうか。gcc-4.1.2です。

25 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:31:47 ]
デバッグ情報をどれだけ入れるかの違い。

26 名前:デフォルトの名無しさん [2007/10/28(日) 01:33:24 ]
もう少し具体的に。
-g3のマクロ云々はいいので、-gと-ggdbだけでも。

27 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 02:03:55 ]
gcc -g はmanで詳細が調べられる
gcc -ggdbはmanで詳細が調べられる
gcc -g3はmanで詳細が調べられる

これぐらいかな違いは。

28 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 02:08:43 ]
manにもinfoにも載ってないよ。

29 名前:デフォルトの名無しさん [2007/10/28(日) 05:58:40 ]
構造体のパックってどうやるんですか

30 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 07:06:55 ]
パックしたい構造体に#pragma pack(1)を使う



31 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 07:36:09 ]
__attribute__((packed)) は?

32 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:10:01 ]
>>30-31
pragma より atribute がお勧め。

33 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:21:57 ]
今時、構造体のパックして何するの?

34 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:31:01 ]
お肌にいい

35 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:40:37 ]
>>33
昔は必要だったの?

36 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:56:39 ]
>>33
余計なalignmentが入るのを防ぐ。

最初にデータ構造ありき、な時は必要でしょ。
ファイルフォーマットとかパケットの構造体作る時とか。

37 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:08:32 ]
そういうわけだから、今でも要るところには要る。

38 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:14:06 ]
アライメント違反でSIGBUSするCPUの場合はどうするの?

39 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:17:31 ]
>>38
ずっと前に、コンパイラがバイト単位での読み書きに翻訳してくれたりした覚えが
あるんだけど、今考えるとメンバ単体をポインタ経由でアクセスしたら死にそう。

40 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:27:17 ]
OSのカーネルがやってくれる場合もあるな。
でも、OSもコンパイラも面倒見てくれない環境もあるべ。

自分でバイト単位に書き込むのか?



41 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:33:59 ]
>>40
だれも面倒見てくれないんなら自分でやればいいだろ。

42 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 12:23:46 ]
>>40
trapで落ちてからか〜、大昔からあるテクニックだけど今時のマシンでやったらstallしまくりでいやげだなぁ。
softfloatとかも便利だけど鈍いよね。



43 名前:デフォルトの名無しさん [2007/10/29(月) 21:34:43 ]
>>42
だがそれがいい

44 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:07:24 ]
>>40
エミュするのめんどいんで、自力でなんとかしてくれ。

>>42
正確に数えたことないけど数十倍の時間がかかるはず。
根性でもう少し高速化できるかも知れんが、あくまで救済措置だからのう…
そんな所にエネルギー使いたくない。




45 名前:デフォルトの名無しさん [2007/10/31(水) 03:47:24 ]
__DATE__とか__TIME__を現在の日時に展開するのをやめさせたいんですが、何か方法はありますか?
こいつらのせいで、毎回チェックサムの異なるバイナリが生成されてしまいます・・・。

46 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 04:11:29 ]
undef?

47 名前:デフォルトの名無しさん [2007/10/31(水) 04:27:42 ]
できないみたい


48 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 04:29:32 ]
__DATE__と__FILE__を含む行をコメントアウト

49 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 04:32:55 ]
#define __DATE__ ""
はムリ?

50 名前:デフォルトの名無しさん [2007/10/31(水) 04:36:47 ]
redefeindでerror



51 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 04:50:28 ]
コンパイルオプションに -undef ってなかったっけ?
それでも __DATE__ とかには効かないかもしれないけどね。

52 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 06:01:50 ]
#if defined(__DATE__)
#undef __DATE__
#define __DATE__ "2007/10/31"
#endif


53 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 12:12:54 ]
-undefは他のマクロも消えて影響大きすぎるから
gcc -U__DATE__ -D__DATE__=\"hoge\" でいいだろ。

54 名前:デフォルトの名無しさん [2007/10/31(水) 18:09:14 ]
無料だな

55 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 13:37:57 ]
4.3もやっぱり実行速度は今までのより遅くなっているみたいだね

56 名前:デフォルトの名無しさん [2007/11/06(火) 05:57:27 ]
マルチスレッドと最適化の問題。 難しいもんですね。
kerneltrap.org/Linux/Fixing_Compiler_Misoptimizations

57 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:33:13 ]
LLVMってどうなのさ

58 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:03:54 ]
llvmで検索してでてくる日本語サイトがゴミ

59 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:21:07 ]
gccのltoが手間取っている間にこっちは順調にやってるぽい?
まだ最適化のステージがgccには及ばない部分もあるかもしれない。
まだちょっとバグがあるけど、もう一歩で実用的になりそうな気配が。
結構appleがコミットしてるな。

offline optimizationとやらがいまいちよくわからないけど、
apiで簡単に使えるようなフレームワークがあるのかな?
llvm-gccで直にコンパイルしたらバイナリサイズが結構でかいんだが、
中に実行時最適化の為のコードが入ってるのかな。
どういう手順で使うのが普通なんだろ。

60 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:50:43 ]
osnews.com/story.php/18889/Kaleidoscope-Implementing-a-Language-with-LLVM/
ちょうどなんかフロントエンド向けのチュートリアルがupされた模様。



61 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:58:46 ]
offlineってのはruntimeじゃない時。
compile-timeでもlink-timeでもない。
インストールした直後とか、利用者に指示された時。


62 名前:デフォルトの名無しさん [2007/11/09(金) 18:40:12 ]
QT

63 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 19:35:45 ]
llvm-gcc4をcygwin上でbuildできた人はいる?
stage2でerrorになるのだが…

どうも、stage1で作ったxgccの動作確認で失敗してるみたい。
空のmain関数だけのtpをxgccでcompileして実行するとseg. faultで落ちる。
生成したアセンブリを見ると、spを変な値に設定してるようだ。

64 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:03:13 ]
cygwinじゃないけどcflagsに何かmarchあたりの設定してるとビルドできなかった。

65 名前:デフォルトの名無しさん [2007/11/12(月) 02:09:17 ]
モノによっては

-mtune=k7

とか、mtune指定するとダメなやつもあったり
そもそも-marchやるだけでダメなやつもあったり
-targetとか、あそこらへん指定すると cannot build executable とか出くさるものもあったり

66 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:43:38 ]
demand pagingってオプションやプラグマとかで
無効化できないものでしょうか?

67 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:39:39 ]
どのdemand pagingのことを言っているのかは知らないけど、
ふつうはOSの機能なんじゃないの?

68 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:41:35 ]
VM?

69 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:21:26 ]
gccでexitをフックするにはどうしたらいいでしょうか?
segmentation faltとかならgdbで場所を把握できるんですが,
exitで普通に終わってしまって..

70 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:37:52 ]
at_exit?



71 名前:デフォルトの名無しさん [2007/11/13(火) 18:29:12 ]
>>69

(gdb) b exit
(gdb) b _exit

では止まらないと申すか。


72 名前:デフォルトの名無しさん [2007/11/16(金) 17:40:13 ]
#include <stdio.h>
#include <sys/types.h>
int main(void) { printf("%d\n",sizeof(size_t)*8; return 0; }

例えば上のようなプログラムでは
/usr/include/libのどのファイル使って実行ファイルを
作成するんでしょうか
できれば調べ方なんか知りたいですが

73 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:00:07 ]
>>72
gcc -v foo.c とか、
ldd 実行ファイル とか


74 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 19:04:28 ]
>>72
リンカにマップを吐かせると...

75 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:31:03 ]
1つ質問なのですが、ここで良いでしょうか。

OSはFreeBSD6.3-PRERELEASEで、C言語の勉強をしていました。
ソースは酷い有様なのでエラーが多発するのは分かるのですが、
何かいつもと違うメッセージが出まして・・・。
最後の3行が(手書きですが)

cc: Internal error: Segmentation fault: 11 (program ld)
Please submit a full bug report.
See <URL:gcc.gnu.org/bugs.html> for instructions.

と書いてありました。
これってどうしたら良いでしょうか。
放っておけば良いとは思うのですが、気になったものでして。


76 名前:75です mailto:sage [2007/11/17(土) 02:44:26 ]
すみません自己解決しました。原因が分かりました。
コマンドを間違えて打っていました。
いつもは
cc -o (実行ファイルの名前) (ソースファイル)
で打っていたのですが今回
cc (実行ファイルの名前) (ソースファイル)
と打ち込んで実行していました。

お騒がせしました。


77 名前:デフォルトの名無しさん [2007/11/18(日) 00:09:24 ]
>>69
どうなった?

>>74
マップは関係なくね?

78 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 10:31:12 ]
大有りだろ
何がリンクされたか一目瞭然じゃん

79 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:19:24 ]
最近の子はマップファイルの出し方も知らんのかね?

80 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 17:31:38 ]
-pthreadと-lpthreadの違いって何ですか?

個人的には常に後者を使ったほうがわかりやすいと思うんですけど
なんでライブラリなしのオプションがGCCにあるのでしょう?



81 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 17:39:45 ]
>>80
単にライブラリをリンクするだけじゃ対応できない部分があるので、
gcc的にもちゃんとthreadをサポートしてくれる(かもしれない)オプション。

82 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:31:14 ]
>>80
実際に試してみれば判るけど、若干できたバイナリに違いがあるから
特に指定のない限り-pthreadの方がいいと思われる。

83 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:40:24 ]
HP-UXとか要注意な。infoかソース読んで。

gccはスレッドローカル変数とかあって、
ライブラリに全部頼るわけにいかない部分もあるし。

84 名前:デフォルトの名無しさん [2007/11/18(日) 20:23:57 ]
誰も-pthreadについて具体的な事を語らない罠。
ま、infoにも詳しい情報ないししょうがないとは思うがw

85 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 20:38:29 ]
出来損ないOSではつけないとイカンようですな

86 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 20:45:18 ]
正直あまり意味のないオプションだからね。今となっては。
#include <pthread.h>と-lpthreadで全て済んでしまう。

87 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 20:45:45 ]
>>81でFA出てるじゃん。
gcc的にも、というだけじゃなくOS(ライブラリ)的にもだけど。

>>85
gccで-pthreadまたは-pthreadsオプションがあるOSは
Linux, Darwin, *BSD, System V, HP-UX, AIX, Solaris
があるが、これら全て出来損ない? w

88 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 20:52:13 ]
そうだよ
完璧なOSはWindowsのみ


89 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 21:11:55 ]
つけてもつけなくても同じ、

つけないと正常に動作しない、
は全然違うぞ。

んで、出来ソコナイはどれ?Linuxは違うな。

90 名前:デフォルトの名無しさん [2007/11/19(月) 00:14:11 ]
リンカ言うと、変な四角い顔したタレントが思い出されて嫌である。



91 名前:デフォルトの名無しさん [2007/11/19(月) 01:30:12 ]
>>87
OSじゃなくてarch依存じゃなかったか。

それと、gccのinfoにはプリプロセサとリンカにマルチスレッドプログラムのコンパイルを行なっていることを伝えるオプションだと書いてあるだけで、実際に何が変化するのかは書いてなくない?
-D_REENTRANTとの関係も教えてくれ。i386のLinuxの話でいいから。

92 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 01:37:08 ]
具体的に語る人を待とう。
>>87 には無理そうだが。

93 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 09:38:34 ]
Sunとかのコンパイラの-mtみたいなもんだろ。

94 名前:デフォルトの名無しさん mailto:age [2007/11/19(月) 14:48:55 ]
とうとうここも低能のアホレス来るようになったか。

95 名前:80 mailto:sage [2007/11/20(火) 11:24:03 ]
おいらの質問で場が荒れたみたいですんませんでした。
レスをくれた人どうも。

とりあえずi386 GNU/LinuxのGCC -pthreadすると
プリプロセサで#define _REENTRANT 1が定義されますね。
あとはリンカで-lpthreadやってるだけなのかなあ。

96 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 11:28:40 ]
なぜこういうことを聞いたかってのは下の記事
「pkgconfigとlibtoolの悪」
udrepper.livejournal.com/19395.html
で、-pthreadしてると-Wl,--as-neededが効かなくなるぞって話です。

で、pkgconfig/*.pcを検索してみたら-pthreadをしてるのはQt関連とgthreadだけ。
だったら、-pthreadを-D_REENTRANT -lpthreadで置き換えられないかなあ
と思って聞いたわけです。

ただ、たとえそうしてもLDFLAGS=-Wl,--as-neededをやるとコンパイルできない
プログラムなんかもあったりして不思議ですが。

97 名前:デフォルトの名無しさん [2007/11/20(火) 16:57:23 ]
>>87
Linuxのmanでは「-pthread」はFreeBSD固有のオプションってなってるけど。。。


98 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 19:09:19 ]
>>97
偏屈なmanだな。
OSXでman gccしたらRS/6000andPowerPCのオプションに書いてあるな。
i386にはないんだろうか。

99 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 19:56:01 ]
>>98
Fedora 8に入ってるmanを見てみました。
gcc-4.1.2のマニュアルだと、
IA-64 Option, RS/6000 and PowerPC Options, SPARC Options
に書いてあります。

FreeBSD固有って書いてあるのは、Linux日本語manだけど、gcc-2.95.3の翻訳だから今となっては古い。

100 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 00:06:24 ]
freebsdのスレッド対応ってまともになったん?まだグダグダ?



101 名前:デフォルトの名無しさん [2007/11/21(水) 13:55:08 ]
まともだよ。
ただGPLがらみでgcc止めるとか言い出している人いるから、
また諸々ぐだぐだになるかも。

102 名前:デフォルトの名無しさん [2007/11/21(水) 21:43:37 ]
なぁ、Linux上でGCC4を使っています。コンパイルしたアプリケーション中、
各モジュールがどう構成されているのかを知りたいのだけどどうすれば
いいのかな。知りたいのは以下の通り

読み取り専用データサイズ(コード+定数)
読み書き可能なデータサイズ
ゼロクリアされるデータサイズ

また動作しているアプリケーションのメモリ中、共有ライブラリが
使用しているメモリサイズ、ヒープ領域のサイズ、スタック領域のサイズ
も知りたいのだけど。どうしたらええんかな。

103 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 21:54:00 ]
$ size a.out
$ lsof -p PID
じゃダメか?

ライブラリの使っているメモリの区分ってのは難しいな。
テキスト領域しか分からない。
別のヒープ、スタック使ってるわけじゃないから。
スタックについては、debuggerが頑張れば追跡可能だろうけども。

104 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 21:55:39 ]
/proc ?
gccのネタ関係なry

105 名前:デフォルトの名無しさん [2007/11/21(水) 22:12:48 ]
>>103
ありがとう!sizeがまさに欲しかったものでした。

106 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 22:25:29 ]
      -=-::.
  /      \:\
  .|          ミ:::|
 ミ|_≡=、´ `, ≡=_、 |;/
  ||. ◎ .| ̄|. ◎ |─/ヽ  我は成大作・姜尚中・張勲・郭光雄・成田豊・辛格浩・盧勝正公認
  |ヽ二/  \二/  ∂> 恨憎貶日創価高麗大使である。お前が立てたスレッドをグレート
 /.  ハ - −ハ   |_/  コリアレスリングエンターテインメントワイドショースレッドとして認定する。
 |  ヽ/ヽ/\_ノ  / |
. \、 ヽ二二/ヽ  / /
.   \i ___ /_/
     ___
   / ?\ ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウ
 /ノ  (@)\ ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョウホウレンゲッキ
.| (@)   ⌒)\ ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョウホウレンゲッ
.|   (__ノ ̄|  |   ///;ト,  ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョ
 \   |_/  / ////゙l゙l;  ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョ
   \     _ノ   l   .i .! |  ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョ
   /´     `\ │   | .|  ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョ
    |  >>1    | {   .ノ.ノ  ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョ
    |       |../   / . ナンミョウホウレンゲッキョウナンミョウホウレンゲッキョウナンミョウ









107 名前:デフォルトの名無しさん [2007/11/21(水) 23:38:06 ]
>>105
共有ライブラリ云々は、.soをsizeすればいい。

が、sizeで出力されるtextサイズには.rodataセクションのサイズは含まれていないと思う。そっちはreadelfかな。
あと、sizeじゃヒープとスタックのサイズもわからんだろう。それはいいのか?
簡単なのは、 /proc/pid/maps 見るとかかな。粒度荒いけど。

108 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 05:24:07 ]
sizeで情報が足りなかったらldにmapfile吐かせれば大抵間にあうだろ。

109 名前:デフォルトの名無しさん [2007/11/23(金) 00:40:26 ]
kwsk
出力付きでな。

110 名前:デフォルトの名無しさん [2007/11/25(日) 23:06:34 ]
群馬のGCCの池田には散々嫌がらせをされたなー。
あの野郎あったら確実に・・・
まーここのスレとは関係ないが。



111 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 02:40:36 ]
あんま関係ないけど、gcc-4.1.2とicc-10.1のO3同士の比較があったから。
www.anandtech.com/IT/showdoc.aspx?i=3162&p=6
4.1でこれなら4.2,4.3と結構速くなっきているから結構いい線いってんのかな?

まぁまだvectorizeはちょっと信頼性の部分で弱そうだけどね。。。

112 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:54:45 ]
>>111
>4.1でこれなら4.2,4.3と結構速くなっきているから結構いい線いってんのかな?
それはダウト
少なくとも4.2ではかなり遅くなった
4.3では性能向上…のはずが、いつのまにかパッとしない性能で仕上がっちゃってる

確かにvectorizeはどうもね…バグがまだ潰しきれてない感じ

113 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 08:07:28 ]
C++派の俺から観ると、4.3は非常によろしいんだけど、
C数値計算はたまらんでしょうな。

114 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:34:28 ]
4.3は4.2と同様、4.1よりはかなり性能悪くなってた

でもメーリングリストではコードの信頼性が上がるなら
性能などいくらでも落ちてよいって流れだったから
これからも性能は悪化し続けそう

115 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 14:00:28 ]
>>114
www.suse.de/~gcctest/ ではいい傾向になってるし
自分で試してもよくなった部分もあるんだけどな。
多分112と同じ人と思うけど、どこかuriポイントしてください。

116 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 14:07:52 ]
数値計算する場合は細かなチューニングよりもGOMP使ってくださいサーセンwwww
ってところじゃないのかな。

117 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 14:21:29 ]
gcc.gnu.org/ml/gcc/2007-11/msg00023.html

118 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 14:23:59 ]
もしかして1コードだけのregressionで判断してるのか。

119 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 14:27:47 ]
いや最近期待できない方向に進んでるみたいだから悲観的になってるだけ

120 名前:デフォルトの名無しさん [2007/11/28(水) 16:56:46 ]
GOMPで思い出したが、ゴンプ言うな。



121 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 17:00:51 ]
>>119
>>118への答えになってないじゃないか。


122 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 17:05:25 ]
判断してるってことだよ

123 名前:anonymous mailto:sage [2007/11/28(水) 17:27:05 ]
以前このスレにgcc-2.95が最高で、以後はクソとひたすら叫んでいるヤシがいたけど、
そいつがまだ粘着しておるのか?

124 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 17:32:52 ]
違うよ
その人は実行速度のことは気にしてないんじゃなかった?

125 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 17:49:00 ]
コンパイル速度を気にしている人はいたな。
俺はC++の標準準拠最優先だから、人それぞれって事で。

126 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:29:32 ]
もっとベンチ結果無いかな

127 名前:デフォルトの名無しさん [2007/11/28(水) 22:40:30 ]



俺はコンパイル速度よりもコンパイル後の実効速度さえ速ければいいや。





128 名前:デフォルトの名無しさん [2007/11/29(木) 10:30:05 ]
gcc4.2.0をインストールしようと思っているのですが、
configureしてmakeすると、parse-scan.cが見つからないと出てしまい、
それはネットで拾ってきて入れたら、通ったのですが、今度は

java/jv-scan.o: In function `main':
../.././gcc/java/jv-scan.c:221: undefined reference to `main_input_filename'

と出て、その解決方法がわかりません。そのchar*型変数自体はgcc/toplev.cに宣言されているので、
toplev.hにextern宣言して、jv-scan.cに明示的にインクルードしてみたんですが、それでもダメです。

この解決方法や解決案について誰か教えてください。
SuSE Linux 10.1です。

129 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 10:47:05 ]
parse-scan.cはparse-scan.yから作られます。
bisonがinstallされてないと生成できません。

・エラーメッセージをちゃんと読んでない
・かなり無茶をしている
・既にそのbuild環境はダーティ

なので、冷静になって初めからやり直してください。
SuSEなら何の問題もなく作成できると思います。

130 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:03:13 ]
>>129
ご回答どうもありがとうございました^^)
bisonをインストールしたら、gccも無事にビルド出来ました!
P4 1.8GHzでmakeに4時間もかかったよママン



131 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:53:12 ]
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ
gccは2.95が最高、以後はクソ


132 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:30:07 ]
俺もそう思っていたけど、2.95 が手元の環境でビルド出来なくなっていて驚いた。

133 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:58:04 ]
flexやbisonがなくてもconfigureに成功してしまうのは、
何かの陰謀なのかねえ

134 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:21:50 ]
x86_64に対応してればなんでもいいよ

135 名前:デフォルトの名無しさん [2007/12/01(土) 23:27:43 ]




オアーオアーオアオアオアー





136 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 08:18:57 ]
gcc、お呼びgcc javaについて理解できないのですが助言お願いします。
情報を求めてwiki等を見回っていると、
gcc javaはネイティブなコードを出力するとあります。
これはVM上で動作するバイトコードではなく、マシンで直接動作するバイナリコードという事でしょうか?
又、gccの言語間の関数、クラス等の呼出は可能でしょうか。

137 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:38:51 ]
>>136
ネイティヴコードってのはそういうこと.gcjは以下の変換ができる.
- Javaソースコード→プラットフォームのネイティブコード
- Javaソースコード→Java クラスファイル
- Java クラスファイル→プラットフォームのネイティブコード

>又、gccの言語間の関数、クラス等の呼出は可能でしょうか。
gcj の場合はJNIかCNIのいずれかの規約にしたがってのみCやC++のAPIを呼びだせる.

138 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:55:00 ]
Sunのオープンソースになったクラスライブラリも
ずいぶんとgcjでコンパイルできるようになってきたね。

139 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:04:01 ]
gcjはネイティブコードと言ってもCほど速くないのが何とも。

140 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:02:16 ]
766 名前:●テヘ権田●[sage] 投稿日:2007/12/04(火) 23:29:39 ID:YtCMOwpP
> gcc自体はC2D用とかそういうチューニングはしてなくて
いやそうじゃなくてコードが腐ってるんだよ、コンパイル時間が遅いのもそのせいw
pc11.2ch.net/test/read.cgi/jisaku/1195376856/766



141 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 16:33:48 ]
アルゴリズムによってはVM方式のほうが速い場合なんていくらでもあるだろう
JavaなんてC++で言うところのRTTIを使いまくりなんだしさあ。
ハゲがC++をvirtual宣言してないとオーバーライドできない糞仕様にしたのも
パフォーマンスの問題があるからでしょ(つまり糞仕様じゃないってことなんだけど)

142 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 23:15:50 ]
virtualでオーバーロードしたら遅くなるのは自分で設計してみりゃ脳内ですぐ気付く問題

143 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 23:55:27 ]
>>142
vtbl経由するコストだけで、オーバーロードは関係ないだろ。

144 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 09:11:10 ]
オーバーライドと混同したって話だろうな

145 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 13:29:49 ]
#include <sstream>
#include <string>

using namespace std;

int main(void){
stringstream ss;
string str;
ss.str("test1 test2 test3");
// ss >> str; //←この行のコメントを外すと、コンパイルは通るが実行するとセグメンテーションフォルト
return 0;
}

>gcc --version
2.96

バグですか?

146 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 13:42:22 ]
>>145
バージョンが古すぎて調べる気にもならん。

147 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 13:58:44 ]
(´・ω・`)
管理者に言ってバージョンあげてもらいます。

148 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 17:39:35 ]
cygwin版gcc 4.0まだー?

149 名前:デフォルトの名無しさん [2007/12/19(水) 00:32:39 ]
古いものなら何でもかんでも安定する!とか言って、単に今ある最新版から
テキトーにマイナス3くらいしたバグだらけの古いもの採用するVine Linuxとかある

本当に実績のあるものを選んでいるわけではなく、まさにテキトー。
最強バグ版のGCC4.0.2採用しているあたり実績で見てるわけじゃない

150 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 19:42:19 ]
この板で鳥の話出す馬鹿



151 名前:デフォルトの名無しさん [2007/12/20(木) 15:00:05 ]
スレ違いだったらすみません。

GCCでコンパイル時と別のコンパイラでコンパイル時とを
#ifで分けたいのですが、GCCでコンパイル時必ずdefineされる
マクロってありますか?

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

253 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 07:53:05 ]
r300って、MIPSの何かかと思ってしまった。。R800でもいいけど。

254 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:43:58 ]
>>253
> R800でもいいけど。

懐かしいね

255 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:29:30 ]
>>252
なんか最近、wxの・・・更に言うならwx-configの話題をよく見かけるな
どこかで流行ってるのかね

256 名前:デフォルトの名無しさん [2008/02/09(土) 23:35:10 ]
GCCで、どこからも参照されていない関数を除去するオプションを探しています。
VC++でいうとプロパティ -> リンカ -> 参照の「参照されないデータを除去する」です。
GCCのバージョンは4.2.2で、組み込み向けのクロス環境です。

257 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:08:40 ]
それはgccじゃなくてリンカldの仕事。VC++でもリンカliの仕事。
んで、--as-neededがそれなのかな?よく知らないいけど。
gccから渡すには、-Wl,LFLAGSのようだけど。

258 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:11:14 ]
スタティックリンクしてるのかな?

正直スタティックリンクまわりは普段使ってないのでどうにも...

259 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:16:30 ]
-ffunction-sections  あたりでggr


260 名前:259 [2008/02/10(日) 01:30:59 ]
>>256
関数だけじゃなく、グローバル変数も除去したいなら、-fdata-sectionsも要るな。
「データ」って書いてあるので一応補足。

>>257
それは、ライブラリを必要に応じてリンクしろというオプションだから今は関係内ね。
ldに渡すのは--gc-sectionsだったかな。




261 名前:256 [2008/02/10(日) 01:45:00 ]
>>260
-ffunction-sections -Wl,--gc-sectionsを試してみましたが、目立った効果は無いみたいです。
COFFなのが原因かもしれないです。

262 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:50:37 ]
COFFか。。それはよくわかんないな。
ELFのstatic linkでしか試したことが無い。

263 名前:256 mailto:sage [2008/02/10(日) 02:12:19 ]
>>262
とりあえず地道に小分けにして対応することにします。
ありがとうございました。

264 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:33:30 ]
今更なんだけど、gccって、せっかく一旦yaccだかbisonだかを使う事にしたのに
また手書きのパーザに戻したらしいよね。なんでなんだろ?
普通にパーザジェネレータ使ってた方が、何かと便利だろうに。

265 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:48:34 ]
GCC全体じゃなくてC++のフロントエンドだけ。
C++がLALRでパースするのはキツい変態言語ってだけでは。

266 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:25:44 ]
citeseer.ist.psu.edu/cache/papers/cs/21998/http:zSzzSzwww.cosc.canterbury.ac.nzzSzACMchapterzSzNZCSPGzSzpaperszSzwalzTzcosc.canterbury.ac.nz.pdf/irwin01generated.pdf

267 名前:264 mailto:sage [2008/02/10(日) 13:25:54 ]
サンクス。
なんか下のpdfの冒頭、凄いこと書いてるな。自然言語パーザの方がふさわしいって?
いや辞書片手に読んでるだけだから、誤読かもわからんけど。

まあ上手く動いてるなら、いいか。。。
できるだけ、へたな努力はしないで欲しいんだけどな。。。
つか、パーザジェネレータ使う方が「へたな努力」になってしまうって事?

・・・あれ?そうすると、「へたな努力」って何なんだっけ?
ちょっと電波板で独り言つぶやいてくる。

268 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:40:19 ]
>自然言語解析の分野で非常によく知られている富田法(GLR 法)が、
>従来のアプローチよりも C++ のパースに向いている事を発見した。

って書いてあるね。

GLR法
ja.wikipedia.org/wiki/GLR%E6%B3%95

269 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:42:00 ]
bison では GLR をサポートしているらしいが、
それでも bison は使えないんだろうか?

270 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:38:05 ]
あんまり変体過ぎて、パーザジェネレータの分野が活発になっているという…



271 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:55:34 ]
>>263
馬鹿げた方法だけど C++ なら全部ヘッダに inline で書く手もw


272 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:27:31 ]
>>268
C++って、自然言語に匹敵しかねないほど文法が複雑ってことか……

273 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:16:46 ]
Walter タンが D を作りたいと思った気持ちが分かるな。

274 名前:ストラウストラップ mailto:sage [2008/02/11(月) 01:21:57 ]
ハゲって言った奴は誰だ!

275 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 05:16:32 ]
びよ〜ん

びよんびよ〜ん

276 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 07:05:28 ]
しゅと・ら・うすらっぷ

277 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:33:40 ]
すっぽすっぽ

278 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 05:32:13 ]
来週にはRCビルドが始まるそうな。arch=core2にwktk

279 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:01:13 ]
てかいまも使えるよ

280 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 09:49:07 ]
llvmだいぶ速くなったものもあるみたいだけど、どうですか?



281 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 10:13:14 ]
どうですか(笑)

282 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 01:44:12 ]
gccをFPGAで作った自作のCPUに対応させたいんだけど、
binutilをいじればいいの?

何か参考になる書籍があれば教えて。

283 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 06:22:39 ]
まずはgccintだろう。

284 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:44:23 ]
>>283
ありがとう

285 名前:デフォルトの名無しさん [2008/02/29(金) 02:16:52 ]
4.4forkしますた

286 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:53:35 ]
gdbについて聞きたいんですが、
fork()のとき、どっちのプロセスも追っていきたい
ときってどうすればいいんでしょうか?

ただしソースコードはいじれないとします。


287 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:01:44 ]
もういっこgdb起動してアタッチ?

288 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 03:54:21 ]
GCCのマニュアルを読んでみると、-O1は -fauto-inc-decから-funit-at-a-timeまでの24つのフラグを有効にするとあるので
bzip2を-O1でコンパイルしたバイナリと、-fauto-inc-dec以下24つのフラグでコンパイルしたバイナリとで、
同一のファイルを圧縮するのにかかる時間を比較したところ、同等の結果が得られませんでした。
-fauto-inc-dec以下24つのフラグでコンパイルしたバイナリは、何も最適化フラグを与えずにコンパイルしたバイナリと
同程度の結果になりました。どうしてこの様な結果になるのでしょうか。
gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#Optimize-Options



289 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 05:51:10 ]
>>288
「-Oは以下の最適化フラグを有効にする」と書いてあるけど、それしか
しないとは書いてない。
gccのソースを見ると、「最適化レベルが1以上なら〜」というコードが
けっこう見付かるはず。


290 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:59:59 ]
>>288
各最適化オプション -fxxx は -O が前提となってたりする。
だから -O 指定せずに -fxxx 指定して効果がなくてもそんなもの。

最適化フラグ指定でんでんはGCCのソース嫁


でんでん…



291 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 12:02:04 ]
で...云々

292 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:28:35 ]
まさか、「云々」を「でんでん」と読んでたりしないだろうな。

293 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:32:22 ]
>>292 本当ならガイシュツ並に痛い気がする。


294 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:46:50 ]
ここは痛いインターネッツでつね


295 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 14:48:23 ]
「ガイシュツ」と同じくネタのつもりなんだろうけど、わざわざ読みに
くく書くのは個人的には嫌いだ。


296 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:58:23 ]
何年も前のネタでも反応が初々しい。このスレの住人は可愛い

297 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 01:59:27 ]
>>288
実はディスクの方が律速で差が出なかったとか。

というかどうやって計って、どういう結果になったのか
書いてもらわんと難しいと思うわけで。



298 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 11:22:03 ]
4.3.0キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.3.0

299 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 14:35:38 ]
mirror貼れ
ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.3.0/

300 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 15:12:45 ]
GNUをミラーしてるお近くのftpサーバへどうぞ、でいいんじゃないのか。



301 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 16:07:59 ]
snapshots見てたから気づかなかったぜ

302 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 22:25:45 ]
4.3の一番の売りは、主な数学関数をコンパイル時に展開してより最適化してくれるってことでOK?

303 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:26:47 ]
-march=core2 -mtune=core2でしょ

304 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 16:13:38 ]
geodeも忘れるな

305 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 05:30:08 ]
で、4.1より早いの?
じゃなきゃ糞だが

306 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 06:24:09 ]
gcc-4.3のバイナリ実行速度は、integerについてはgcc-4.1よりも速いし、バグの数もgcc-4.1よりも少ない。

307 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:33:42 ]
>>306
4.1から4.3で何が良くなったのか簡潔に頼む。

308 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:39:08 ]
ggr (3バイト)

309 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:44:39 ]
fate見ると4.3って4.1に比べて遅くなってるような。
4.1.2 fate.multimedia.cx/index.php?build_record=6158
4.2.3 fate.multimedia.cx/index.php?build_record=6169
gcc svn 133010, built 2008-03-07 fate.multimedia.cx/index.php?build_record=6163

310 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:56:34 ]
以前にベンチをnbenchとかbzip2とかで取ってみて比較した印象だと整数演算に関しては4.1より4.2の方が明らかに良いと
思っていて、最適化フラグが-O2の場合は4.2より4.3の方が若干良いという印象を持っていたのでそう書いたのでけど、
実は-O3の場合は事情が違って、4.2の方が4.3より良い結果になると思っています。つまり、
gcc-4.2-O2<gcc-4.3-O2<gcc-4.3-O3<gcc-4.2-O3
の順に性能が良くなると思っています。fateというベンチはstdout textを見ると-O3でコンパイルされているので
4.2の方が4.3より良い結果になるというのは順当だと思います。



311 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:20:14 ]
C++ヲタだから、あんまり速度比較には興味ないんだけど、
4.3はforward propagationが大幅に書き換えられているから、
4.2のの頃の結果から4.3の振る舞いを推測するのは危険だぞ。

312 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 13:19:28 ]
4.3.0今試してみたけどやっぱり4.1.2より遅いバイナリ吐いた
あくまで自分が使うプログラムでってことだけど

313 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:47:18 ]
速い遅い以前に挙動が変わっちゃって今トレース中だよ・・・

314 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:34:14 ]
それは十中八九 GCC のせいじゃない。
まあ、警告が不十分だった事に起因してる点があれば
30% 程度は GCC にも責任があるかもしれないが。

315 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:35:17 ]
>>307
gcc.gnu.org/gcc-4.3/cxx0x_status.html
Status of Experimental C++0x Support in GCC 4.3

Rvalue references N2118 Yes
Rvalue references for *this N2439 No
Variadic templates N2242 Yes
Static assertions N1720 Yes
Declared type of an expression N2343 Yes
Right angle brackets N1757 Yes
Default template arguments for function templates DR226 Yes
Extern templates N1987 Yes

C99 Features in C++0x
__func__ predefined identifier N2340 Yes
C99 preprocessor N1653 Yes
long long N1811 Yes

もちろんg++起動オプションでオンにしたときだけ。
gcc.gnu.org/gcc-4.3/changes.html

316 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:37:24 ]
>>314
まさかgccはlintにするために作ってるわけじゃあるまいに。なんだその30%て。

317 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 19:19:11 ]
Linuxで最近よく自分でアプリやカーネルをmake installします。gccの最適化フラグをつけないとつけた時に
比べてやはり遅いんだなってのは体感しました。所がアプリによりつけたフラグによっては動きが悪くなる
ってのも体感。

なので自分はソースが読めないのでgcc4.2シリーズの-march=native -O2のみにして全部これでやることに
しました。それなりに快適に動いてます。

少し前からgcc4.3の最適化は4.2よりいいと書いてある記事をみて開発版の4.3を入れたけど
なんか動きがかなり違う。コンパイルが出来ない(一切フラグをつけなくても)物も出てきた。

それどころかある設定をしないとカーネルでさえコンパイル出来ないんですね・・・・
ググってカーネルのmakeファイルに設定を追加して出来上がった物も動きが悪いです・・・
やはり今回の正式リリースもカーネルとかそのままコンパイル出来ないんでしょうか?

まあ、それは対策が解るからいいものの、使った感じちょっとソースが読めないような自分が使う物ではないな
と感じたです。コンパイルエラーが出たのをネットでググる時間が(TT)

318 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:08:32 ]
ソース読めない、情報拾うのが涙目、って状態で開発版を入れる神経が理解できない。

319 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:14:00 ]
>>318
じゃあ正式リリース版のgcc4.3.0では何もいじらなくてカーネルコンパイルくらいは平気で出来るの?
4.2シリーズは開発版だろうがまるで神経使わなかったけど。

320 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:15:00 ]
じゃあ(笑)



321 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:17:07 ]
>>320
答えられないような人は黙っててよww

322 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:28:23 ]
>>319
開発版を入れる神経を疑いはするが、4.3が安定しているかどうかは知らない。
私ゃ態々カーネルをコンパイルし直すほど暇じゃないんでね。

323 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:39:37 ]
そうそう体感できるものでもないだろ
0.3秒かかってたのが0.27秒とかになったとしても

324 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:15:34 ]
どうせGentooユーザなんだろうなぁ

325 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:08:50 ]
春厨だよ

326 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:27:47 ]
>>322
安定とかの問題以前でgccサイドとカーネルサイドの意見が違っててどっちも直さないってのが
ある筈なんだけど・・・

gcc4.3、カーネルと聞いて思い浮かばないようならもう話はいいですww

327 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:07:27 ]
「ある筈なんだけど」っていう程度の人は、
リリースされたばかりのコンパイラを使わない方がいいと思うよ

> やはり今回の正式リリースもカーネルとかそのままコンパイル出来ないんでしょうか?

あなたにはよく分からないことだから。

328 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:04:11 ]
すいませんちょっとお尋ねしたいのですが、
コンパイル時に二つのオプションを使うことってできるのでしょうか?
例えば、若干スレ違い臭いのですが、質問させてください。

例えば、
`wx-config --cppflags` と `pkg-config --cflags gtk+-2.0`
を同時に使いたいのです。

同時に使えるとしたらどのように書けばいいのでしょうか。
どなたかご教示頂けると幸いです。

329 名前:328 mailto:sage [2008/03/11(火) 00:05:15 ]
3行目コピペミスなので無視してください・・

330 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:10:10 ]
別スレでレスがつかなかったからこっちで・・・とか
そのくらいの経緯は書いて欲しいな。
というか、向こうでレスついたぞ。



331 名前:329 mailto:sage [2008/03/11(火) 00:16:00 ]
>330
すいません、そういうもんなのですか。以後気をつけます。
レスついたみたいですね。ありがとうございましたm(_ _)m

332 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:48:36 ]
ん?GTK+スレでもwxスレでもないどこかなのかな?ま、いいか

333 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:30:21 ]
4.3でカーネルがビルド出来ないというのは、これです。
gcc.gnu.org/bugzilla/show_bug.cgi?id=32044#c28

334 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:33:55 ]
カーネルに限らず、O2レベルでもミスコンパイルはよくあるから別に驚く話でもないが。
GCCコミッテーに文句つけて今の版のバグフィックスをしろよ、クソハゲドモと外人に文句垂れてくるんなら
俺は得に気に留めないよ。

335 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:38:16 ]
方向の違うこういうのもあるから、素人さんにはお勧めしない。
git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e40cd10ccff3d9fbffd57b93780bee4b7b9bff51

正直、コンパイル猿になるよりもずっと有意義なことがいくらでもあります。
何か一つターゲットを絞って深く追ってみるのならいいけどね。

336 名前:sage [2008/03/13(木) 10:12:58 ]
int result;
__asm__ (
"imull %%edx\n\t"
"idivl %3\n\t"
: "=a" (result) /* out */
: "a" (m1), "d" (m2), "g" (d) /* in */
: "ax", "dx" /* mod */
);
return result;
}
でコンパイルするとcan't find a register in class ‘AREG’ while reloading ‘asm’とのエラーが表示され、コンパイルできません。
どのように改善したら良いでしょうか。

337 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 10:35:04 ]
なんか付帯情報が変な気がするんだけど、
何を参考にしました?

338 名前:sage [2008/03/13(木) 10:38:28 ]
koulesっていうゲームのソースをmakeしたところエラーが発生したので
ソースを見てみたらわけわからんという状態です。


339 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:18:37 ]
氏ね

340 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:44:18 ]
gcc3 と 4 で変わったっけ?



341 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 23:18:52 ]
g77 死亡

342 名前:デフォルトの名無しさん [2008/04/06(日) 00:24:12 ]
gccのオプションで-ggdb3,-gや-O0, -O2のようにどちらかしか採用されないようなオプションを
同時に渡したときどちらが採用されるのでしょうか?

gcc -ggdb3 -O0 -g -O2 -c src.c -o src.o
と実行したときsrc.oは「-ggdb3 -O0」それとも「-g -O2」?

343 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 08:01:45 ]
引数の解釈する順番?

344 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 11:48:45 ]
>>342
You can mix options and other arguments. For the most part, the order
you use doesn't matter. Order does matter when you use several options
of the same kind; for example, if you specify `-L' more than once, the
directories are searched in the order specified.

機能が被る場合にどうなるかは明記されてないが
理解の一助にはなるかな?

345 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 12:36:30 ]
-Qとかつければ、どう解釈されてたか見れたような?

346 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:25:44 ]
Windowsと違って、UNIXだとsleep(0)ってやっても効果ないの?


347 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:44:17 ]
Windowsだとどんな効果があるの?

348 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 17:19:21 ]
>>346
Windowsでの効果は知らないけれど、Linuxの場合はタスクスイッチングを強制させるのに使える。
要は「最低0秒」止まるので、他に処理するべきプロセスがあればそちらを実行することになる。
# 逆に言えば、最悪何秒も止まりっぱなしになるかもしれない。

349 名前:デフォルトの名無しさん mailto:sag [2008/04/06(日) 20:31:52 ]
pthread_yield


350 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:52:21 ]
タスクスイッチというかカーネルへの制御の移行ね。
システムコールからそのまま戻るにしても既に送られたシグナルがあれば
戻る直前でシグナルハンドラが走る。

あとUNIXによってはsleepはプロセスタイマを使う可能性があるらしいので
ユーザプログラム側でタイマを使う場合は注意が必要かも。



351 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 11:58:14 ]
>>349
それはスレッドだから、>>348の言っていることとは違う。
pthread実装はカーネル・スレッドばかりじゃないから。

352 名前:デフォルトの名無しさん [2008/04/07(月) 15:23:45 ]
インクルードパスとライブラリのパスを環境変数で設定する方法を教えてください

353 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:29:27 ]
今時、その手法ははやらないんじゃないの?

354 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:33:12 ]
CPATH
LIBRARY_PATH
とか?

355 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:50:52 ]
INCLUDES
LD_LIBRARY_PATH

356 名前:デフォルトの名無しさん [2008/04/08(火) 13:10:13 ]
g++ で libfoo1.a と libfoo2.a をリンクしているのですが、
この2つのライブラリが相互に依存しているので、
undefined エラーになります。

libfoo1.a libfoo2.a のソースをいじることなく、
うまくリンクすることはできないでしょうか?


357 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:17:09 ]
libfoo1.a内のどのオブジェクトがlibfoo2.a内のどのオブジェクトに依
存しているかなど、もうちょっと詳しい情報が欲しいけど、とりあえず
gcc .... -lfoo1 -lfoo2 -lfoo1
のような感じでできへん?

libfoo1.aとlibfoo2.aをバラして1つのlibfoo.aにしてしまうとかも。



358 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:44:25 ]
>>356
sourceware.org/binutils/docs/ld/Options.html#index-groups-of-archives-127

359 名前:デフォルトの名無しさん [2008/04/09(水) 13:51:18 ]
LIBRARY_PATHとLD_LIBRARY_PATHの違いは何ですか?


360 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 13:53:28 ]
ldかld.soか
要するにコンパイル(リンク)時か、実行時か。



361 名前:デフォルトの名無しさん [2008/04/09(水) 16:39:29 ]
>>352
どうやってやるの?
IとかLとかでいちいち指定するの?
それともmake?小さいプログラムではわざわざmakeなど使いたくないのだが。

362 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 16:41:32 ]
スクリプトでやればいいじゃん

363 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:14:24 ]
>>361
CFLAGS=-I/usr/include/foo
LDFLAGS=-L/usr/include/foo -lfoo

default: foo

これだけ。foo.cから実行ファイルfooを作る。

364 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:28:43 ]
/usr/lib/gcc/target/version/includeのようなgcc付属のヘッダのある
ディレクトリを取得する方法はありますか?
-nostdincを指定してるソースからstdarg.h等を使いたいのです。

365 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 11:13:22 ]
gcc -print-search-dirs


366 名前:デフォルトの名無しさん [2008/04/10(木) 16:07:17 ]
nm libhoge.a | grep hageとしたら
00001ffb t hageとでるのに
int main() {
 return hage();
}
のようにhageを呼び出してるプログラムのリンクが失敗するのですが
どのような原因が考えられますでしょうか?

gcc -g -O0 main.c  -o huga -L. -lhoge
main.c:2: undefined reference to `hage`
collect2: ld はステータス 1 で終了しました

367 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 16:19:41 ]
? gcc -v -g -O0 main.c -o huga -L. -lhoge

368 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 17:02:27 ]
? gcc -v -g -O0 main.c -o huga -L. -lhoge -Wl,--verbose

369 名前:デフォルトの名無しさん [2008/04/10(木) 17:43:36 ]
CとFORTRANでは最適化の方法が違うの?

370 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 22:06:32 ]
>>366
t ってことはローカルシンボルじゃん



371 名前:デフォルトの名無しさん [2008/04/14(月) 20:54:13 ]
Cygwin上でGCCのC,C++のクロス環境を作ってます。
newlibと組み合わせてビルドはうまくいってるんですが、
libstdc++のgchファイルがかなりサイズを食っていて扱いづらいです。
実際には、C++の言語本体の機能だけ利用できれば十分です。
configure時にうまく無効にする方法などあれば教えてください。

372 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:19:53 ]
libstdc++で
configure --help
やってみたら、何か出るかも?

373 名前:デフォルトの名無しさん [2008/04/15(火) 13:22:43 ]
GCCに、関数呼び出しとリターンを表示させたり記録させたりする
オプションってありましたっけ?
なんかあったような気もするけど、ぐぐってもヒットせんかった。

374 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:25:40 ]
実行時だとみれるような機能があったような?

375 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:35:46 ]
>>373
記録させることはできないが、-finstrument-functions で hook させることはできる。

ググればいろいろ出てくるが、
www.ibm.com/developerworks/jp/linux/library/l-graphvis/index.html
ここがわかりやすいな。

376 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:56:20 ]
>>375
なにこれー!今日ほど2chが役に立った日はないわ。ちょーさんくすこ。

377 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:23:08 ]
>>371
--enable-libstdcxx-pch build pre-compiled libstdc++ headers
[default=$is_hosted]

378 名前:371 mailto:sage [2008/04/15(火) 21:11:44 ]
>>372,377
ありがとうございます。
--disable-libstdcxx-pchを入れて試してみます。

379 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:53:48 ]
gccで、クロージャとは言わないまでも、
ユーザーが作った関数へ、後から動的に値を埋め込む方法はありませんか?
言語処理系のコールバックの実装で、
その関数が呼び出された時に、その値を参照したいのです。
グローバル変数や、アセンブラを使えば作れるのですが、
できれば使わずに済ませたいので。


380 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:00:19 ]
任意のパラメータを受け取れる void* 型の引数を作るといいよ。



381 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:00:26 ]
つ 関数へのポインタ

382 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:28:31 ]
#include </dev/tty>

383 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:30:04 ]
>>380-381
いやそうじゃなくて。
言い方を変えれば、関数とユーザー値を組み合わせて
新しい関数を作れるかって事です。
その新しい関数は、呼び出し時に
なんらかの方法でユーザー値を受け取れる事。

384 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:31:21 ]
また、誰が呼び出すかは判らないので、
ユーザー値をその関数の引数に入れる事はできません。

385 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:39:56 ]
g() { return closure_ref(0) + 1; }
f(pg) { return ((int (*)())pg)(); }
main() {
printf("%d\n", f(make_closure(g, 1)));
return 0;
}

この場合2が表示される。
make_closureとclosure_refを作れるか

fはstdlib.hのbsearchやqsortのように、
任意のライブラリの可能性もある。
(当然gはその型に合った関数型になる)


386 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:55:20 ]
C++ならできるからg++使えってのはあり?

#include <boost/tr1/functional.hpp>
#include <boost/utility/result_of.hpp>
#include <cstdio>

template<typename T>
T g(T x)
{
  return x + 1;
}

template<typename T>
typename boost::result_of<T ()>::type
f(T g)
{
  return g();
}

int main()
{
  std::printf("%d\n", f(std::tr1::bind(g<int>, 1)));
}


387 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:02:29 ]
>>386
C++の型拡張による物は呼び出し側(f相当)を限定してしまうので不可です。
あくまで汎用的なコールバックに使える事が前提なので。
一応nested functionで限定的にできる事は判っています。


388 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:08:04 ]
>>387
その限定というのは、boost::function (もしくはstd::tr1::function)で何とかなるものではない?

389 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:16:17 ]
>>388
boost::functionでできそうです。
ありがとうございます。

390 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:47:24 ]
GCC4で、できなくなった気もするが
つ ttp://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Nested-Functions.html



391 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 12:17:28 ]
Apache C++ Standard Library 4.2.1 released
mail-archives.apache.org/mod_mbox/www-announce/200805.mbox/%3c20080502200946.T96786@minotaur.apache.org%3e

392 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 07:48:27 ]
ttp://gcc.gnu.org/ml/gcc/2008-05/msg00216.html
> GCC 4.2.4 is now available to download from gcc.gnu.org and ftp.gnu.org

393 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:54:03 ]
たまに聞く、GCCは4シリーズより3.4とかの方がアプリなどの動きが早いって聞いて入れてみた。
コンパイルが出来ない物が出てきたから一時は諦めたけど、最近C++関連は(sijc,glibmm,cairomm,gtkmmなど)
全部同じコンパイラーじゃないとうまく動かないというのを知ってその辺全部3.4でコンパイル。

使用してみた感じ、コンパイル(-O2のみ)した各アプリの動きが良い。カーネル2.6.25もGCC3.4でコンパイル。
立ち上がりとかも早くなりました。dmesgの左に出る起動時の細かい時間とかも早くなっているのが解る。

GCCの4シリーズなどは、その新機能を生かすソースを書いてあげないとあまり意味が無いんでしょうか・・・
快適なのでとりあえずしばらく3.4メインにしようかな。

394 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:53:22 ]
>>393
気のせいですよ。

395 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:50:22 ]
このスレ見ている人がいるなんてwww 全米も感動(TT)

396 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:26:30 ]
違いが気になるなら、アセンブリ出力を見比べてみればいい。

397 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:59:58 ]
アセンブリなんか見るよりアプリケーションベンチ取ればいい。
アセンブリの差はCPU側の処理方法によって優劣付けにくいから。

それにしてもgcc替えてまでやっての感想が「気がします」とは
だんだんオーヲタみたいになってきたな。電源ケーブルを純銅にしたら
電気の流れが速くなってキビキビ動作になりました!と変わらん。

398 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:49:16 ]
>>393
気になるなら調べてください。
調べる気がないなら気にしない方がいいです。

399 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:14:13 ]
>>393
自前コンパイルなら機種依存オプションまで付けろ、と。

400 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:30:40 ]
>>397
電源ケーブルは材質よりインピーダンスとアース極性チェックが大事。
信号線の方は俺は純銀ケーブルにしてる。無酸素銅とどっちが良いかはなんとも言えんが。



401 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:38:43 ]
>>400
うん。そういう風にわかってこだわるのはいいんだ。
>>393は試したって-O2だけかよ、って小一時間問い詰めたい。

実際のところ、カーネルとかマルチメディア系とかはコンパイラの癖にまで
依存したギリギリのチューニングが施されている場合があるから、
コンパイラの能力を評価するにはフェアじゃない。

402 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:02:12 ]
x264dev.multimedia.cx/?p=32

403 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:45:06 ]
そういや昔見たのは、
groups.google.com/group/comp.lang.forth/browse_frm/thread/545177ea53944038/eebaa14010b86c61?hl=en#eebaa14010b86c61
gccは2.95が最速、あとは遅くなるだけだぜ、みたいな話

404 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:00:30 ]
毎回gdb立ち上げて特定のメソッドにブレーク張ってとかの作業を
自動化してくれる方法はないでしょうか?

405 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 03:07:00 ]
>>404
gdbの起動時にスクリプトを実行する機能があるよ。
詳細はmanでも読んで。

406 名前:404 mailto:sage [2008/06/01(日) 03:14:36 ]
>>405さんありがとうございます。
.gdbinitというファイルをカレントディレクトリに用意して
以下のように書いてうまくいきました。

exec-file ./test.exe
symbol-file ./test.exe
r
b main

407 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 02:34:00 ]
gccでコンパイルするときに
コンパイルしたソースファイルの名前を、
ディレクトリも含んだ状態でオブジェクトファイルに格納する
らしいのですが、
どこに書かれているのでしょうか?

408 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:35:54 ]
$ nm -a foo.o

409 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:34:16 ]
June 6, 2008
GCC 4.3.1 has been released.

410 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:32:10 ]
GCCで音階のプログラムを組もうとおもっています。
波数とパルスの詳細が知りたいので、教えてください。
4オクターブを想定しています。



411 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:47:42 ]
>>410
GCC関係あるのか?

どういうプラットフォームで何からどうやって音を出そうというのかを
はっきりさせて下のスレあたりで聞いたほうがいいように思う。

サウンドプログラミング4
pc11.2ch.net/test/read.cgi/tech/1185340076/

412 名前:デフォルトの名無しさん [2008/06/11(水) 12:28:28 ]
GCCでプリコンパイル済みヘッダ使うとき、元のヘッダ*.hと同じディレクトリに
*.h.gchが作られますけど、release用とdebug用の二つのプリコンパイル済みヘッダを
使いわけたいときなんかは、皆さんどのようにしてますか?

413 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:48:52 ]
*.h 自体を release や debug 用ディレクトリに
コピーしてから使ってるなぁ。


414 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:58:59 ]
ディレクトリ指定してそこに作らせる。

415 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:02:27 ]
gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html
によると、*.h.gch というディレクトリを作って、その中にそれぞれ用のプリコンパイルヘッダを置いておくといいらしい・・・

416 名前:412 mailto:sage [2008/06/11(水) 22:22:02 ]
>>415 さんのやり方で無事できました。皆さんありがとうございます。
*.h.gchディレクトリ以下で、コンパイルオプションが同じものを勝手に使ってくれるようです。
プリコンパイル済みヘッダのファイル名はなんでもいいようです。

417 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 17:28:44 ]
長い間VC6、VC8(MFC)で実装をやってました
この度、新しいプロジェクトでlinuxでC++の実装を担当することになったのですが
VisualStudioの生ぬるい環境に、長い間どっぷり浸っていたせいで
いまいち、調子がよくありません
gcc(g++)の環境で、VisualStudioのようなデバッガーって無いのでしょうか?

418 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:14:02 ]
EclipseもC++に対応してたような

419 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:47:48 ]
>>418
Thx
Eclipseをインストールして、続けてC++の開発環境もインストールしました
実装に専念できそうです

420 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:03:30 ]
Eclipse既にインスコしたようだが、Dev-c++もお奨め



421 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:25:52 ]
eclipse/cdtかkdevelopだな

422 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:46:17 ]
Emacs以上の環境は存在しない

423 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:29:33 ]
これがゆとり世代か・・・

424 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:30:54 ]
emacsはもう死んだよ

425 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:16:05 ]
Emacs is dead. The future is notepad.

426 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:48:10 ]
>>424
ん?xyzzy が便利なんですが。CL だし。

427 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:50:55 ]
emacs憶えたら便利なんだろうって何となく思うけど、
憶えるための最初の一歩を踏み出す気が起きない。

428 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:49:38 ]
以下のような関数をgccでビルドするとき、
最適化オプションを何もつけていないのに
return -1;の部分が最適化されて消えてしまうことってありますか?

int func(void) {
// この関数が呼ばれた時点でバグなのでデバッグ時は無条件にアサートさせる。
assert(false);

// リリース時に万が一呼ばれたときはエラー値を戻す。
return -1;

}

429 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:51:50 ]
gcc -S でソース嫁


430 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:07:12 ]
>>428
gccは最適化ナシでも簡単なフロー解析(この場合、あからさまに到達不能なブロック)はやっている。

assert() 内部では __attribute__((noreturn)) なファンクションが呼ばれている。

あとはわかるな?



431 名前:428 mailto:sage [2008/06/15(日) 15:55:11 ]
>>429,430
どうもです。

以下のソースを
gcc -S -o test.s test.c

gcc -S -DNDEBUG -o test2.s test.c

とすると挙動がわかりました。
ありがとうございました。

#include <assert.h>
void f(void)
{
assert(0);

int i = 0;
++i;

}

432 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:00:22 ]
複数の-g系オプションを並べた場合は
後ろの方が強いのですか?

gcc -ggdb -gxxx

433 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:12:53 ]
gcc 4.3,ひどいな…

434 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:56:53 ]
いつものごとく4.5くらいまで進めば安定するんでないかい。

ということで3.4使いつづけとります。



435 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:39:25 ]
俺にとって、4.3はC++0xのためだけに存在しているようなもの。

436 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:02:01 ]
openmpのこともたまには思い出して上げてください

437 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:09:27 ]
>>436
思い出してもageません?

438 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 13:22:48 ]
Converting GCC to C++
lwn.net/Articles/286539/

439 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:38:48 ]
>>438
これはつまり
gcc cxx.cpp
ができるようにするからくりというわけ?

440 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:36:18 ]
GCC を C++ に移植したいらしい。



441 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:51:26 ]
The FSF is not writing the code. にワロタ

442 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:14:20 ]
>>440
そっか逆か。ありがと。

443 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:08:06 ]
もういっそJavaでもいいんじゃね派が登場して
混沌としてほしい

444 名前:デフォルトの名無しさん [2008/06/20(金) 08:48:26 ]
なんてアグレッシブな!と思ったけどブランチ作っただけでコードはまだか。
内部のモジュール化が進むといいなあ。

445 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:07:28 ]
JavaでいいならCOINS

446 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 23:26:34 ]
GCC 3.4 x86_64 で -mno-sse が効かないんですが、理由が分かる人はいますか?

gcc -S -fverbose-asm の出力を見ると、-mno-sse を付けているにも関わらず -msse が有効になっています
実際、アセンブリを見ても SSE 系の命令が出力されています

447 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 01:01:06 ]
>>446
-mfpmath=387

448 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 01:56:55 ]
>>447
それを付けても駄目みたいです
また GCC 4 系ではそれを付けなくても -mno-sse が有効になります

449 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 02:01:23 ]
>>446
>GCC 3.4 x86_64 で -mno-sse が効かないんですが、理由が分かる人はいますか?

横な質問なんですけどx86_64でSSEの無いCPUって何ですか?

450 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 02:28:49 ]
>>449
あまり詳しいことは書けないけど
XMM レジスタを使わないことが前提のアセンブリコードや CPU エミュレータがあるので
C ソースファイルをコンパイルするときに SSE コードを生成して欲しくない

あるいは浮動小数点演算自体の使用を禁止する運用も可能だけど
その場合、浮動小数点演算を使用しているソースをコンパイルエラーで弾くくらいはする必要がある



451 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 16:46:13 ]
-mno-sse2 なんてオプションはなかったよなw

452 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 00:25:02 ]
>>451

GCC 4 なら -mno-sse だけで -mno-sse2 -mno-sse3 まで付きますし
GCC 3.4 はそれらを併用しても駄目ですね

453 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 00:51:05 ]
gccのことは知らないが、
windowsだとlong modeでFDP/MMX系のレジスタは一切使わない。
スタックフレームもレジスタ優先でほとんど使わないし、
そのとき実数データの受け渡しにXMMレジスタ使ってる。
XMM使うなというのが無理な話状態なのです。

454 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:18:00 ]
すみません、gdbの質問をしたいのですがここでもいいですか?

gdbの中でグローバル変数の一覧を取得(表示)する方法はありますかね?
ローカル変数に関してはinfo localsがありますが。

455 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 01:05:59 ]
shell から nm 呼ぶってのは無し?

456 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 02:39:05 ]
info variables

457 名前:454 mailto:sage [2008/07/07(月) 09:49:28 ]
>>455
えっとグローバルなbssとdataのシンボルを見ろということですかね?
やってみたんですが、自分がいじってるプログラムではどうもconstな変数が
textにいるように見えるんですが... ldの挙動をコントロールしているようで。
デバッグのときだけ「普通」にリンクするというのはありかもしれませんが...

>>456
やってみるとなんかエントリーが重複して見えるんですが、そんなもんですかね。
ちなみにinfo localsと違って値を表示してくれたりはしないんですね。

458 名前:デフォルトの名無しさん mailto:sega [2008/07/12(土) 17:05:47 ]
コンパイルをした日時を埋め込む・取り出す方法ってありますか?

今はmake時に引数で`date`なんかを渡す方法を使ってるけど
そのdefineを使うソースがコンパイルの対象になっていない限り
反映されないので、いまいち使い勝手がわるいんです

459 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:12:50 ]
シェルで、日時を何かのファイルに書き込んで、
それからコンパイル。

460 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:15:10 ]
そのソースを毎回必ずコンパイルするようmakefileを書けばいいのだと思うんだけど



461 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:26:04 ]
>>460
その方向でやってみます
となると、次はMakefileスレだな

462 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:43:50 ]
__DATE__ とかないんだっけ
フォーマット考えると自分でやったがいいか

463 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:08:17 ]
all: hoge ・・・・・・・・
hoge:
 絶対コンパイルしたいファイルをコンパイル
でいいんじゃね?

464 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 20:39:26 ]
GNUmakeなら.PHONYとか

465 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 21:02:58 ]
ファイルの一番後ろに日付書いといたらいいんじゃないの

466 名前:458 mailto:sage [2008/07/12(土) 21:20:32 ]
やっぱ>>460の方法はやめました

コンパイルする必要がないときでもmake叩くと必ずコンパイルされてしまう
というのは俺の精神衛生上よくないことがわかりました

467 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:36:37 ]
コンパイルした実行ファイルの日付をチェックすればええんちゃう?

468 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:51:20 ]
埋め込むんじゃなく、コンパイルするたびに
バイナリのMD5ハッシュと時刻をログファイルに記録すればいいんじゃね。

469 名前:デフォルトの名無しさん [2008/07/13(日) 01:02:01 ]
質問です。
インストールしたてのcygwinにgcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
がインストールされているので、gccを最新版の4.3.1にしようと思ったのですが。
configure --prefix=/usr/local とし、
make したら
/home/***/gcc-4.3.1/i686-pc-cygwin/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp:108: error: invalid use of incomplete type 'class __gnu_pbds::detail::thin_heap_<Value_Type, Cmp_Fn, Allocator>'
のところで詰まってビルドが止まってしまいます。
この原因についてご存知の方いらっしゃいませんか?

470 名前:458 mailto:sage [2008/07/13(日) 01:33:13 ]
>>468
それも考えたのですが、なんか面倒なので
リンカに頑張ってもらう方法を調べることにします



471 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 09:04:25 ]
>>466
それはmakefileの書き方でいくらでも回避できるんじゃね?
最後のlinkする所のtargetの中で依存関係無しにちょろっとccしてしまえばいいんじゃ

472 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:07:05 ]
cat `date` >> hogehoge

とかやって、

strings -a hogehoge
とかやると、読めなくもない。

473 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:09:39 ]
stringsを使わなくても、

tail -c [文字数] hogehoge
でもいける。
後から偽の時刻を埋め込まれたら知らんけど。

474 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:36:17 ]
いずれにしろ -D で渡すのも気に入らないとか、
コンパイラのほうで実現するのは気持ち悪いとか言ってるから、
スクリプトとか他のもので好きなように実現するのがいいんじゃないのか?

475 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 11:08:07 ]
%%%%%%%%%%CREATION_DATE%%%%%%%%%%%%%%% とか他にありえない文字列で
領域を確保しておいて、ビルドした後で実行ファイル(ライブラリかも知らんが)を
直接書き換えればいいんでは。

476 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:12:12 ]
foo: $(shell date).o

$(shell date).c:

477 名前:デフォルトの名無しさん [2008/07/17(木) 04:56:52 ]
VC++からの移行組です。
VC++のソースをGCCでmakeしようとして、
いくつかの違いのエラーで悩まされてしまいました。

それで、どうやっても解決策・代用策が思い浮かばない点を質問させてください。

this->m_char_table[ (add_unsigned<T>::type)c] = this->m_char_table_index;

このように、テンプレートの型をunsignedにキャストして利用したいのですが
GCCではエラーとなります。
こういう使い方は出来ないのでしょうか?
また代用の方法はないのでしょうか?

gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
を使用しています。

よろしくお願いします。

478 名前:マイク ◆yrBrqfF1Ew mailto:sage [2008/07/17(木) 07:26:46 ]
おっおっおっ⊂ニ( ^ω^)⊃
ちょい書き込みtest

479 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:13:45 ]
>>477
エラー張ってくれよ。

480 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:14:20 ]
あとcの型な。



481 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:51:06 ]
>>458
__DATE__ __TIME__でいける。


const char aaa[] = __DATE__ __TIME__;


482 名前:477 mailto:sage [2008/07/17(木) 13:49:10 ]
>>480
cの型はテンプレート(T)です。
基本的には、char、wchar_t、int、shortなどを取ります。
それ以外の型が入れられる事はないようにはなっていますが
基本的には特定はされません。(自分用のライブラリなので整数以外を取る事はありません)

>>479
error: dependent-name ` add_unsigned<T>::type' is parsed as a non-type, but instantiation yields a type
です。役に立ちますでしょうか?


よろしくお願いします。

483 名前:477 mailto:sage [2008/07/17(木) 13:52:17 ]
自己解決しました。
そのエラーメッセージの後に
note: say `typename add_unsigned<T>::type' if a type is meant
と出ており、そのとおりやったら解決しました。
盲点でした。

どうもありがとうございました。

484 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:55:51 ]
どの辺が盲点なのかと。
英語で書いてあるところか?

485 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:04:14 ]
つーかそれ、VC++でもエラーにならね?
VC++6.0組?

486 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:19:24 ]
>>485
6.0、2003、2005、2008で試したけど問題にならんよ。
VC++はなぁなぁだからなぁ・・・。
IEとかと同じで、その辺がMSの製品って好まれるんだろうね。
いいとは思わんけど、ちゃんと規格にそってる方が敬遠される状態は勘弁してもらいたい。

487 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:23:04 ]
いや、この場合はGCCの規格が悪いと思う。
普通に考えればtypenameをキャスト時にするのはおかしいもの。

次に>>477が詰まるのは、wchar_tかなw
wchar_tを取りうるって言ってるし。
GCCのwchar_tは欠陥品な上、
文字コードの統一の問題が・・・w

488 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:02:46 ]
>>487
5.4 Explicit type conversion (cast notation)
8.1 Type names
7.1.5.3 Elaborated type specifiers
くらい読めよ。

あと「GCCの規格」なんてバカな言葉は使うな。
どうせいうなら「GCCの仕様」あるいは「GCCの実装」だ。

wchar_tもいい加減なこと言ってるよなあ。

489 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:46:45 ]
典型的な、コンパイラとライブラリの区別がつかないひと


490 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:59:02 ]
いや、GCCの仕様は馬鹿だろ
あれほど必要の無い理解しがたい仕様をつめるのは
頭の悪い俺には理解できんよ(笑)



491 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 16:00:39 ]
>>489
typename 修飾子って本来ライブラリの管轄じゃないだろ・・・

492 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 16:03:54 ]
キャストの問題もライブラリの管轄とは思えんが・・・

493 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:34:46 ]
wchar_tの話だろ。


494 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:39:14 ]
>>484
最初からエラーメッセージ張らない人だから、
そもそもエラーメッセージを読まない人なんじゃないかとw

495 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:59:12 ]
むしろ、エラーメッセージしか見なかったんだろ。
最初の質問で、エラーの内容は理解してると思われる。
ただ、エラー以外をみなかった。ということだろう。

いやね、俺もその傾向あるからわかるんだが
コンパイラってだいたいロクなメッセージ伝えてこないから
エラーそのものしか見る気しないのよ。そのエラーすら別の箇所による問題によって
引き起こされてたりするので、そのまんま信じるわけじゃないし。
1つエラー出ると、大量にどうでもいいメッセージが出るから、頭の中でフィルタかけないとエラーは解決できない。


496 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:22:53 ]
寧ろ、そんな発想だからフィルタが必要なんだろ。

497 名前:458 mailto:sage [2008/07/18(金) 09:44:05 ]
>>481
そのファイルがコンパイルされた日時ならそれでいいけど・・・

498 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:12:00 ]
何が望みなんだかわかんねえ

499 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:25:03 ]
>>497
Makefileで常にコンパイルするファイルをそれにしておけばいいんじゃね

500 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 12:14:13 ]
>>498
消えろ



501 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 12:17:07 ]
俺もよくわからない。
.oが出来た日時をCのソースから利用したい。
a.outが出来た日時をCのソースから利用したい。
どっちなの? 前者なら>>481でFAでしょ?
後者なら>>464の方法で出来るよね。
もっと違うこと?

502 名前:458 mailto:sage [2008/07/18(金) 13:10:48 ]
>>501
バージョンを取得する関数のあるソースを hoge.c としたとき
hoge.o を他の全オブジェクトに依存させればいいのかな?
やってみるよ。

503 名前:458 mailto:sage [2008/07/18(金) 13:15:23 ]
できた。ありがとう >>501

>>499
コンパイルの必要が無いときはコンパイルしたくないんですよ。

504 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:04:35 ]
501だが、>>501>>502眺めて
30秒考えてようやく仕様が分かったw
>>501の後者って事だよね。

>>464の言っている別解だが、

.PHONY: hoge.o

これで「hoge.o is up to date」になることなく、
hoge.oが必要とされれば、タイムスタンプ比較をショートカットして、
毎回ルールに基づいて生成しようとする。で、

a.out: $(OBJS) hoge.o

としておけばいい。


505 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:56:12 ]
>>504
それソースが更新されてないときでも、生成されね?

506 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:17:45 ]
a.out が更新されたってことは生成必要なんじゃ?

507 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:50:47 ]
a.out: $(OBJS)
$(COMPILE) $(CFLAGS) hoge.c
$(LINK) $(OBJS) hoge.o


508 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:14:44 ]
BCB使っていて興味本位にGCC触ってみたんですけど
下のコードって通らない、というか間違った書き方なんでしょうか?
環境はubuntuのg++4.1.3です

template< typename T >
class test
{
friend class test< T >; <<ここで怒られてる
public:
int aaa;
};


509 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:20:07 ]
エラーメッセージは?
読んだ?




510 名前:508 mailto:sage [2008/07/18(金) 17:38:43 ]
〜 error: class 'test<T>' implicitly friends with itself
と出ていました。

英語もわからずGUIでしか操作したことないとGCCなんて使うこと出来なさそうだなぁ。




511 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:45:22 ]
「自分自身はいちいち宣言しなくてもfriendされてるのと同じことできるよ」と言っています。

512 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:51:40 ]
ええええ!
・・・実体が違うなら同じクラスでもpraivateに触れないと思ってました。
ありがとう!

513 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:56:11 ]
なんか .PHONY が誤解されてる気がする。

514 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:00:41 ]
>>512
ちっとは英語の勉強しようよ。なんだそのスペリングミスは。

515 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:08:09 ]
わざとじゃねーのか。
さすがにキーワード間違えないだろ

516 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:32:08 ]
playmateに触れたい

517 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:32:51 ]
あるオブジェクトファイルがリンクされたかどうかって・・・というか、
あるシンボルの中身が存在するかどうかってソースレベルでチェックできる?

存在しないシンボルを参照してもリンカがエラーを吐かないことが前提で・・・

518 名前:517 mailto:sage [2008/07/23(水) 00:47:49 ]
__attribute__((weak_import)) が自分のやりたいことに合致しそうだけど
サポートしてるのは MacOS X だけっぽい
諦めてほかの方法を探すかな

519 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:29:49 ]
何をしたいのかがわからない。
実行時にシンボルの中身が存在するか判定したいんだったら遅延リンクでもいいんじゃね?

520 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:48:10 ]
>>517
つ dlopen(3)



521 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 06:42:03 ]
>>517
オブジェクトのリンク状況つうのは、

foo.c
#include <stdio.h>

int bar_magic = 0 __attribute__ ((weak));

int is_bar(void)
{
return 0;
}

int main(void)
{
 printf("%d\n", is_bar());
 return 0;
}

bar.c
int is_bar(void)
{
 return 1;
}

とかやって、
$ gcc -o foo foo.c && ./foo
$ gcc -o foo foo.c bar.c && ./foo
の結果が変わるでいいんですか?


522 名前:517 mailto:sage [2008/07/23(水) 19:07:38 ]
>>519
質問の仕方が下手ですまん。
最終的には組み込む予定のとある関数を、一時的に外したいが #ifdef などでソースを切り分けたくない。
シンボルの中身の有無がプログラム中から判別できれば、 makefile 側でリンクするオブジェクトを
管理するだけなので楽かなと思った。

>>520
条件の後出しで申し訳ないが、組み込み環境なので動的リンクはちょっときつい。

>>521
weak_import じゃなくて weak で良かったのか。どうもありがとう!

int weak_func(void) __attribute__ ((weak));
/* int weak_func(void) { return 1; } */

int main(void)
{
  if (weak_func)
  {
    dbg_print("Function exist\n");
  }
  else
  {
    dbg_print("Function not exist\n");
  }
  return 0;
}

523 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:59:40 ]
リンクエラーは解決したか?

524 名前:517 mailto:sage [2008/07/23(水) 23:48:01 ]
>>523
俺宛てかな?実はそこが問題になるとはあまり考えてなかった。
中身が無いことを前提にしたシンボル参照をソースで意図出来れば、
当然リンカもエラーは吐かないだろうと思ってたので。(そしてその通りになった)
でも気にしてくれてありがとう。

今後の予定としては、間違えて同名のシンボルを別のソースで定義してしまい
関数が上書きされたことに気づかずバグに苦しむ。というストーリーを計画しています。

525 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:14:00 ]
GCCのコンパイルがおわらねぇ

526 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:17:21 ]
まあ環境によっては2日仕事だな

527 名前:デフォルトの名無しさん [2008/07/24(木) 18:37:23 ]
マジか…
400MHzのアナルスペックで3時間くらい放置してる絶望

528 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 19:31:19 ]
余計なの削除してやり直すか…

529 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 20:51:42 ]
>>525
もし余ってるマシンがあるなら、distccで分散コンパイルとかどうよ。
C++だとエラー出まくりで、コンパイルできなかったりするけど。(これは俺の設定が悪いのかな?)

530 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 22:41:16 ]
make LANGUAGES=cで放置

メインのPCは修理に出してしまったから、400MHzの一台しかないんだよ…
やっと3時間くらいでstage1が終わったから、朝までつけっぱなしで終わりそうかな
マルチコアCPUなら-j 2とか付けたいんだけど…



531 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 09:25:12 ]
>>530
ひとつでも-j 2はこうかてきめんだよ。
HDDに書いてる間CPUひまだし

532 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:15:29 ]
今まで-jなんて知らなかったorz
クアッドコア使えるのに。

533 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:26:22 ]
な、なんだってー(AA略

534 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:21:39 ]
ーj10

535 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:33:24 ]
軽く15年前からあるオプションだよなw

536 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:02:57 ]
エラーでるわ
素直にバイナリ落としてきた

537 名前:デフォルトの名無しさん [2008/07/25(金) 20:03:33 ]
OpenOffice.orgは非常に大きなプログラムなので、
RPMファイルの作成には長い時間が必要となる。
1GHzのCeleronで実行したところ、14時間以上かかった。
www.atmarkit.co.jp/flinux/rensai/linuxtips/642opt686.html

538 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 21:28:10 ]
C言語で書かれているプログラムをAlphaの命令セットで実行できるように
クロスコンパイルするにはどうすればいいのでしょうか
まず何が必要なのでしょうか?
とりあえずGCC,binutil,glibcを用意してみたのですが…


539 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:05:49 ]
>>538
linux.bytesex.org/cross-compiler.html
でどうよ?

540 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 05:47:44 ]
gccやbinutilもってきたなら中のドキュメント読めば、つーか
configure --helpすれ。



541 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 09:35:55 ]
>>539
すげーどめいんw

542 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 10:15:19 ]
んー。「エンディアンネス」のくだけた表現で、向こうではわりかし普通よ?
ttp://www.catb.org/jargon/html/B/byte-sex.html

543 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:02:15 ]
>>541
もしかして:
www.bitesex.com

544 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:37:15 ]
>>541
vmware に NetBSD 入れて /usr/src/build.sh -m alpha tools

545 名前:544 mailto:sage [2008/07/27(日) 19:38:37 ]
>>541
って、すげードメイン、か。すげーめんどいん、に見えた。
逝ってくる。

546 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:48:13 ]
すげーメイド!

547 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:34:26 ]
いろいろアドバイスありがとうございます
とりあえずGCC,binutil,glibcだけでなんとかなるor541の方法ってことでOK?

binutils入れてみようとおもったのですがconfigureで HOST=~には使っているマシンの
状況を書けばいいのかな? それともプログラムのバイナリを実行させる先の
事をかけばいいのか…

HOST=CPU-COMPNY-SYSTEM ってことらしのですが
CentOSでPentium4のマシン使っている場合だとx86-centos-linuxで
いいんですかね?

548 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:46:44 ]
>>547
カナディアンクロスやるんじゃなければ
ホストは configure が勝手に発見してくれるので
/path/to/configure --target=
で桶

いろいろほげってダメだったらまた濃い

549 名前:548 mailto:sage [2008/07/29(火) 00:50:02 ]
ちなみにこのへんの GNU toolchain は
カナディアンクロスもある程度考慮されてるので

"Linux ホストで、MipsターゲットのCygwinバイナリを作る"
てな感じも(必要な知識があれば)可能。
↑経験談

550 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:50:20 ]
GCCは変態だなぁ(褒



551 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 07:44:13 ]
クロスコンパイルはGCC & binutilsの独擅場だからねぃ

552 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 03:13:53 ]
このスレには優しい神が宿っているようだ。

553 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 02:39:23 ]
>>550
変態なgccだなあ

554 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:49:35 ]
4.3.2

555 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:09:13 ]
GCCは最高のクロス開発環境だなあ

556 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:49:53 ]
GCC に #pragma optimize はないんですよね?

ある大きな数値計算プログラムがあって、
全体としては -O や -O2 など最適化はしたい。
けど一部、計算誤差などを考慮した、
計算の順番を変えてほしくないコードがある。

Intel Compiler などは pragma でソコは最適化しないように
回避できるんだけど、GCC はどうしようかと。

なんか手段あります?
ソースを分けて、そこだけ -O0 にするしかないのかな?

557 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 21:07:41 ]
> ソースを分けて、そこだけ -O0 にするしかないのかな?

と思う。

558 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 21:17:06 ]
>>556
-fno-fast-math か?

559 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 00:43:26 ]
556とは別人なんだがinline関数なんかの場合はそこだけコンパイラオプションを変えるわけにもいかないし
精度は保ちつつ最大限速くしてもらいたいからvolatile使うのも嫌だしとワガママ言ってしまうことはあるね。

Cを高級アセンブラとして使っているときに
局所的に自分でスケジューリングした順序で動いて欲しいこともあるし。

560 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 13:43:44 ]
>>556
研究や業務で使う道具としては悩むよりもicc使っておいた方が良い場合に該当するんじゃなかろうか?




561 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 16:33:28 ]
volatile とかうまく使えないんだろうか



562 名前:デフォルトの名無しさん [2008/09/02(火) 07:14:38 ]
GCCでもPGOであるんですか?

563 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 07:57:22 ]
最近のならあるよ
-fprofile-generate/-fuse-profile

564 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 07:57:55 ]
まちがえた-fprofile-useね

565 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 16:26:38 ]
フリーなのにすごいですね…

566 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:06:49 ]
実績だけは(アーキテクチャによっては)存分にあるからな。

567 名前:デフォルトの名無しさん [2008/09/03(水) 02:16:10 ]
__artificial__アトリビュートを調べていたら、下のドキュメントが
あったけどなんかいまいち理解できん。
わかりやすい日本語で解説してくれ!

artificial
This attribute is useful for small inline wrappers
which if possible should appear during debugging as a unit,
depending on the debug info format it will either mean marking
the function as artificial or using the caller location for
all instructions within the inlined body.


568 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:21:28 ]
この属性は小さなインラインラッパー関数に使いよい。
その関数とはどういうものかというと、デバッグ中には
関数の中に入らずに単体として扱われるのが望ましいもの。
この属性がどう実現されるかというと、
デバッグ情報フォーマットによるが、
関数にartificialというマークをつけるか、
またはインライン化された関数本体中の呼び出し位置を使う
(どう使うのかは書いてない)ことになるだろう。

……と理解した。
デバッグの必要のないような機械的に生成したラッパーインライン関数
なんかに使うといいんでないのかしら。

569 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 04:14:54 ]
$(GCC)/gcc/config/i386/emmintrin.h みてね。

570 名前:567 mailto:sage [2008/09/04(木) 00:45:24 ]
>>568
よく分かった!ありがとぅ!

>>569
まさにそれを見てて気になったんで調べてた

とりあえず、*mmintrin.h は非常に使いづらいんで
自前でラッピングしようと思った次第。

それにしても、GCCのアトリビュートは書きにくい。
アトリビュートはC#の書き方がいい感じ。

[Align(16)]
int hoge = 12;

とか。



571 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:29:14 ]
gccの方が何に掛っているかはっきりする。

572 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 03:11:43 ]
gccでコンパイルしたバイナリを販売したらダメなんだろ?
イミネー

573 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 03:21:42 ]
いや、コンパイルしたもの自体は問題にならない。
GPLなソースが混入してない限り。

だがそれが回避しにくいように念入りに作られてるんだわこれが…

574 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 03:29:58 ]
それと仮にGPLだったとしても、GPLなら販売禁止ってわけじゃないよ。屁理屈みたいだけど。

575 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:03:45 ]
>>572
どこでそんな嘘聞いてきたんだ。

576 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:07:21 ]
>>573
作られてない。そもそもふつーにコンパイルする範囲ではGPLの影響は受けない。
お前のプログラムにGPLが感染するのは、コンパイラ関係無しにGPLのコードを混入させたときだけだ。

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

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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