GCCについて

このエントリーをはてなブックマークに追加
1
オーム社のプログラミングの力を生み出す本
というものを読み始めました。
この本に載っているGCC(GNU C)の
最新版の入手方法がわかりません。
GCCを使って、アセンブリ言語コード、
C++言語コードさらにJAVA言語コードの
コンパイルをしたいと思っています。

GCCの最新版の入手方法とコンパイルまでの流れを教えて下さい。
単発質問につき終了
3:01/12/07 22:29
単発質問ってなんですか
>1
板出入り禁止
6 ◆RubyOmS2 :01/12/07 22:44
>>3
ネタなのかマジなのか知らないが、
スレ立てるほどでもないことは、
スレ立てるまでもない質問スレに書いてくれって事。
http://pc.2ch.net/test/read.cgi/tech/1006910650/l50
それと、親切な4さんに感謝しときなさい。
sageでな、、、
>>1
入手はWinMXでできます。
Adobe PhotoShopとMicrosoft Visual Studio 6.0を用意すれば
たぶん交換してもらえるでしょう。

WinMXはこちらです。
ttp://www.winmx.com/
>>7

犯罪幇助につきタイーホケテーイ
>>8
どの辺が犯罪でしょうか?
>>9
MXでAdobe PhotoShopとMicrosoft Visual Studio 6.0を共有することが。
>>10
7と関係あるのでしょうか?
gccがそんなに多機能だとは知らなかったよ>1
>>12
GNU Compiler Collection の略だしね。
f77, c, c++, asm(gas), java(gcj) に対応。
ただし、gcj はまだ Windows 環境じゃ上手く動かない(少なくとも3.0は)。
Objective CもあるYO
1512:01/12/08 14:21
告白します

gccでjavaがどーのこーのいう1を馬鹿だと思っていました。
てへ♥


↓おかげで眠気がふっ飛びました
http://gcc.gnu.org/java/index.html
CPadつかっとけ.
17:01/12/08 22:00
最新版は、GCC 3.0.2
JAVAは、GCC 3.1 には、Windows 環境 でもうまく動くようになるらしいですね
18デフォルトの名無しさん:01/12/08 22:07
GCJ以外で、ネイティブコードへのコンパイラって何が有るの?
19デフォルトの名無しさん:01/12/09 00:28
>>12
GCCって確かPascalとかObjectiveCとかも
コンパイルできなかったっけ?
けっこう多機能なんだよ、アレ
洩れも詳しくはないけど

GCC教えてスレッドに再利用age
>>18
商用のは VisualCafe に付属していたシマンテックのコンパイラを始めいくつかある。
大抵は数万円するから個人では買わないね。謳っているほど効果があるか疑わしいし。
>>19
中間言語があるからフロントエンドさえあれば何でもOK
22デフォルトの名無しさん:01/12/09 12:03
「おいオメー さっきから うるせえぞ
『知りません』『知りません』ってよォーーーー
『知りません』・・・そんな言葉は使う必要がねーんだ
なぜなら オレやオレたちの仲間は その言葉を頭に浮かべた時には!
既にGoogleや書籍で調べがついちまって もうすでに『知っている』からだッ!
だから 使った事がねェーーーッ
『知っている』なら 使ってもいいッ!」
23デフォルトの名無しさん:01/12/09 12:12
>>20
じゃあ、GCJがフリーでは初めてなのかな。
gasはbinutilsの方だと思うが。
しかしgcjってネイティブコード吐けるのか。知らなかった。

.class作るだけならIBMがGPLで出してるjikesも速くていいよ。
UTF-8にしないと日本語混じりのソースで文句言うけど。
25デフォルトの名無しさん:01/12/09 22:15
安芸
26デフォルトの名無しさん:01/12/09 22:35
jikes
http://oss.software.ibm.com/developerworks/opensource/jikes/

antとjikesをうまいこと使うと日本語もoKらしい。
(antでnative2asciiを使うらしい(ant知らない))
gcc, make, autoconfあたりを網羅した解説書が欲しいな。
28失貴君:01/12/09 23:02
autoconf+automakeはどっかでみた。
29デフォルトの名無しさん:01/12/10 06:17
>>26
ANTって多分これのことでしょ
http://jakarta.apache.org/ant/index.html
Javaで書かれたmakeのようなものですが、
Javaをコンパイルする場合はmakeより高速で高機能です。
native2asciiはJDKについてます
30あり?:01/12/10 19:44
ちょっと遊んでみよと思ったけど、
gasって浮動小数点備わっていないわけ??
>30
浮動小数点を扱うには、$99.00でレジストが必要です。
GNU関連(てか、中核)で$が要求される場合があるという驚き。

#じゃ、しばらく遊んだらnasmだな
>>30
.floatで定数として書けるけど。
>>33
んじゃ、対応するオペレータは?
>>34
gcc -Sを見るとfstplとか使われてますが。
>>31
ワラタ
って・・・ねただよね・・・(おどおど
3732:01/12/11 06:00
え、え!!
$99.00は(float)99の即値という意味です。
>>26
iconvが使えるなら、jikesでもUTF-8にする必要ないよ。

少なくとも、Debian GNU/Linux sidに入ってるパッケージは出来た。

cygwinでもちょっと試してみたけど、iconv使うようにするとうまくコンパイルできなかった。
あと、solarisのiconvもだめらしい。
40デフォルトの名無しさん:01/12/27 03:00
gcc-3.0.3 でたので age。
しかし、C++ で virtual 使いまくりのときに destructorが
2回呼ばれるバグってどうなったんだろう?
GNATSでみると open bug ばっかりでDBとして破綻してる気がしてくる。
41デフォルトの名無しさん:02/01/17 07:53
int i,j,k,a[6][6];

for (i=1;i<=5;i++)
for (j=1;j<=5;j++)
a[i][j]=0;
for (i=1;i<=25;i++){
while (a[(k=rand()%25)/5+1][k%5+1]!=0);
a[k/5+1][k%5+1]=i;
}

これで振り分けするつもりだったのに
gccだとうまくいきません。cc,bccとかならうまくいくのにな。

これってバグかな?
>>41
とりあえず while んとこの ; がなんとなく気になる。
でも、cc,bccでうまくいく、ってのは、もっと気になる。
とりあえず gcc version 2.96 20000731 (Red Hat Linux 7.0) でためしたけど、
ちゃんと動いてるみたいだよ。
4544:02/01/17 08:11
最後に
for (i=1;i<=5;i++)
 for (j=1;j<=5;j++)
  printf("%2d ",a[i][j]) ;
で表示すると
23 13 3 25 15 17 20 16 1 11 6 2 10 12 24 4 22 7 5 19 21 9 14 18 8
にナターヨ、どー?>41
46デフォルトの名無しさん:02/01/17 10:08
"If you want to generate a random integer between 1
and 10, you should always do it by

j=1+(int) (10.0*rand()/(RAND_MAX+1.0));

and never by anything resembling

j=1+((int) (1000000.0*rand()) % 10);

(which uses lower-order bits)."
4741:02/01/17 15:30
gcc 2.95 (AIX4)ですけど、
>>46さんの通りにやってもこんなになります。

0 21 6 0 0 14 24 19 11 20 17 0 8 0 0 12 0 5 2 25 15 7 4 23 16

おとなしく別アルゴリズムにしろって感じでしょうかね。
ありがとうございます。
48デフォルトの名無しさん:02/01/22 08:22
[foo]$ cat foo.cc
class foo{
public:
 void pbuff(void){
  static char buff[16] ;
 }
} ;
void foo::pbuff(void){
 static char buff[16] ;
}
void main(void){
 return ;
}
[foo]$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.0)
[nic@nina cye]$ gcc foo.cc
foo.cc:7: redefinition of `void foo::pbuff ()'
foo.cc:3: `void foo::pbuff ()' previously defined here
foo.cc: In method `void foo::pbuff ()':
foo.cc:7: Internal error #19990919.
foo.cc:7: Internal compiler error in setup_vtbl_ptr, at
../gcc/cp/semantics.c:1203
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
[foo]$

こういうのは、やっぱレポート送ったほうがいいんでしょうか?
それとも、そもそもソースがおかしい場合は、そっとしといたほうがいいんでしょうか?
とりあえず、GCC 3.xで再現するか試したら?
50  :02/01/22 08:41
java1.4beta3ってどうよ?
51デフォルトの名無しさん:02/02/02 03:21
g++がどんなアセンブリコードを生成するのか説明したよいサイトはないですか?
できれば日本語のがいいのですが。。。
やっぱりgcc.gnu.orgのやつを熟読しないとだめかな?
なにがしたい?
・・・スレをあげたかっただけです。全て見透かされてましたね。エヘヘ
54 :02/02/02 03:46
gcc で NASM 構文のインラインアセンブラが使えるパッチとかってない?
55名無しさん@お腹いっぱい。:02/02/02 03:48
>>48-49
$ g++-3.0 foo.c
foo.c:7: redefinition of `void foo::pbuff()'
foo.c:3: `void foo::pbuff()' previously defined here
foo.c:10: `main' must return `int'
foo.c: In function `int main(...)':
foo.c:11: return-statement with no value, in function declared with a non-void return type
$
56^^:02/02/02 03:57
【不幸のレス】
   このレスを見た人間は十三日以内に死にます。
      ※あなたに訪れる死を回避する方法が一つだけあります。
     それはこのコピペを一時間以内に7つ、別のスレに貼り付ける事です。
 コピペをするときは 
 E-mail欄に元スレを書き込んでください

これがあればもっと面白かったかも
58デフォルトの名無しさん:02/02/02 11:12
>>51
man objdump
59デフォルトの名無しさん :02/02/02 13:59
>>58
サンキュッパ あgえ
60   :02/02/13 04:11
あげ
61デフォルトの名無しさん:02/02/23 10:33
3.0.4リリース、おめでと、あげ
変更点は以下の通り

・GCC 3.0 now supports newer versions of the NetBSD operating system,
which use the ELF object file format, on x86 processors.

・Correct debugging information is generated from functions that have lines
from multiple files (e.g. yacc output).

・A fix for whitespace handling in the -traditional preprocessor,
which can affect Fortran.

・Fixes to the exception handling runtime.

・More fixes for bad code generation in C++.

・A fix for shared library generation under AIX 4.3.

・Documentation updates.

・Port of GCC to Tensilica's Xtensa processor contributed.

・A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
62デフォルトの名無しさん:02/03/14 19:57
hozen
【不幸のパッチ】
   このパッチを当てた人間は十三日以内に死にます。
      ※あなたに訪れる死を回避する方法が一つだけあります。
     それはこのパッチを一時間以内に7つ、他人のGCCに当てる事です。
3点、やりなおし
        すでにここは 乂 1000取り合戦場 乂 となっています。
 
      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/|ii|U|ii|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
66デフォルトの名無しさん:02/04/15 11:11
マンセー         
mingwいい加減にgcc3.xxでビルドしてくれー
cygwin使いたくないよ〜
68デフォルトの名無しさん:02/04/15 11:47
cygwinマンセー
cygwin の gcc 3.xx にしてフォスィ
70デフォルトの名無しさん:02/04/15 12:51
ンダンダ
gccのソースって異様にきたなくね?
中見ても何がなんだかさっぱり分からん。
mdファイルをどう処理してるのかだけでも
理解しようと思ったんだけど、しんどい。。
72デフォルトの名無しさん:02/04/16 00:35
cygwinにもjava処理系が入っている! ?
速く3.1が出ないかな。ワクワク
>>71
http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Passes
このあたりがソース解析の鍵かな。
これはいいドキュメントだから保存しておいてもいいかも。
75デフォルトの名無しさん:02/04/16 12:40
gcc に限らず GNU のソースって汚くて読みづらい。
gdbって デバッグAPIとか提供してないのかな。
gdbのエンジンでフルスクリーンのGUIデバッガ作りたいYO!
>76
cygwin の gdb ではダメなのか?
78デフォルトの名無しさん:02/04/16 14:08
>76
GVDの日本語表示対応を熱烈に頼む。Adaで書いてあるけど(w
http://libre.act-europe.fr/

GVD大好き。最高。
gccは普通、何と呼ぶのですか?
私はグッシッシと呼んでます。グッシッシ
じーしーしー
>>79
あまりの下らなさに笑ってしまった、、、鬱
82名無しさん@お腹いっぱい。:02/04/17 00:58
>>71
Emacsも昔からあるところはヒドイっすよ…Stallman先生…

>>75
一般化しすぎ。
つまり、オープンソースの本締は「恥ずかしがっちゃだめ☆」だと…
そうそう。だよね。
ネーミングは、プログラマーの心意気なんだよね。グッシッシ
GNUは明らかにBSD関連とは文化が違うんだなって思ったよ。
86デフォルトの名無しさん:02/04/17 15:18
今週中にgcc3.1が出ると予言
外れたら首くくって氏ね。グッシッシ
既に3.1(CVS)使ってますが何か?
本当にリリースされるなら嬉しいが。
89デフォルトの名無しさん:02/04/18 08:03
>>86
既に5月1日に延期されてますよ?
http://gcc.gnu.org/ml/gcc/2002-04/msg00514.html
gccマスタの人は-drオプションでの出力も理解できるのでしょうか?
あれ、意味がさっぱり分かりません。
91名無しさん@お腹いっぱい。:02/04/21 15:46
マスターどうのこうのよりも、
読む必要のある人、読みたい人が読むってことだから、
そうであるなら${GCC-SOURCE}/gcc/doc/rtl.texiを読め。
でなければ、( ゚д゚)ポカーンでよいではないか。
92デフォルトの名無しさん:02/04/21 15:55
gcc version 2.95.3-6 (mingw special)
というのを使ってみたんだけど、
同じプログラムをbcc32でコンパイルしたら
異様に早くなった。
もともと時間かかる処理なんだけど、
bcc32で実行時間4分。
gcc 待ちきれなくて強制終了(w

こんなもんなんですか?
ちなみにcygwinでのgccは速かったです。


早くなったんじゃなくて、たまたま動いて(以下略)
>>92
つーか、そんな事書いている暇あったら他のプログラムで試してみろ。
cl(vc++) 最適化:普通
bcc32 最適化:芋
gcc 最適化:幼稚園児の日本語並み
gccに性能を求めるのは間違ってるだろ。
>>95
自分が無数の最適化オプションを使いこなせないからといって幼稚園児並と表現するのはどうかと。
>>95
お前がgccを直せ。
三島のような日本語を話せるようにまでしろ。
そして俺たちに使わせろ。
99デフォルトの名無しさん:02/04/26 19:02
cygwin で gcc-2.95.3-5 をインストールしたのですが、うまく動きません。
$ gcc test.c -o test.exe
と入力しても何も生成物が作られず、またエラーも出ずにプロンプトに戻ってしまいます。

$ gcc -save-temps test.c -o test.exe
と入力すると test.i test.s test.o が生成されますので、途中までは動いているようです。

$ gcc -save-temps -v test.c -o test.exe
と入力すると、各処理が表示されました。
cpp0.exe で test.c から test.i を生成しているようです。
cc1.exe で test.i から test.s を生成しているようです。
as.exe で test.s から test.o を生成しているようです。
collect2.exe で test.o から test.exe を生成するようなのですが、生成されていません。
ためしに -v で表示された collect2.exe の行をコピーアンドペーストで再度実行すると
(test.i, test.s, test.oは存在する状態)、ちゃんと test.exe が生成されました。
test.exe を実行すると 正しく Hello,World!! と表示されます。

??? なぜ gcc -v で吐き出された処理を順番にコピーアンドペーストで
貼り付けるとコンパイルできるのに…?
Windows2000を使用しているのですが、テンポラリファイルの作成される
タイミングかなにかが影響しているのでしょうか?

なにか情報があれば教えてください。
100げと。
>>99
メモリが足らないんだよ。
最近出たマシンに買い換えなさい。
10199:02/04/28 00:02
最近出たマシンに買い換えて、ついでにcygwinを最新版にしたら
コンパイルできないという罠。 …なんです。
メモリは 512M 積んでいるんです。
102デフォルトの名無しさん:02/05/01 07:19
April 30, 2002
Vladimir Makarov, of Red Hat, has contributed a new scheme for
describing processor pipelines (commonly referred to as the DFA
scheduler). This new scheme can model certain pipeline architectures
more effectively than the old scheme, which in turn can improve
the code generated by the compiler.

これってどんなもんなんでしょうかね?
103仕様書無しさん:02/05/01 23:19
>>102
それってRTL勉強しなおしってこと?
今一生懸命勉強してんだぞ!ゴルァ!!!
>>103
いや、instruction scheduler(の候補が出たきた)だけでしょ。
-march=athlon
106デフォルトの名無しさん:02/05/07 22:03
>>67
http://www.geocrawler.com/archives/3/6013/2002/4/100/8422034/
3.1のMinGW版作れるみたいっすよ。
実際自分で作成してベンチマークとってみたんだけど、-march=pentium3 -msse
でoptimizeしてもgcc-2.95.3-7とそれほど変わらなかったのだが。
>>95
最適化スイッチいじればgccでも結構いけると思うのだが
>>107
つーか、>>95は単なる煽りだって。bccより悪いわけがない。
bccは「最適化はしてない」と言っていいくらい。
いやー、コンピュータに幼稚園児なみの日本語が喋れるわけ
ないんだから、>>95はgccを絶賛してるんでは?
コンピュータのレベルを越えてると。
gccの最適化スイッチって、何使っている?
-finline-functions -fomit-frame-pointer -funroll-loops
程度しか追加していないけど。。。
>>110
-fomit-frame-pointer
は -O オプション指定だけで付くらしいよ。
-O6
>>112
pgcc使っているから?
114デフォルトの名無しさん:02/05/09 01:53
-O157
-OOO-
116デフォルトの名無しさん:02/05/09 09:43
gccマンセー!!!
ccさくらタンのグロ画像キボンヌ
118デフォルトの名無しさん:02/05/16 07:00
gcc3.1出たよー
20020506のsnapshotじゃまだ
-fpmath=sse
のオプションがうまく使えなかったんだけど、直ったのかな?
120_:02/05/16 10:41
>>71
確かに。効率は良さそうだけど。俺の汚物見てくれよハァハァ
って感じがする(;´Д`)
121デフォルトの名無しさん:02/05/16 12:34
gcc3.1
http://gcc.gnu.org/
やっとメインページ更新。さて落として使ってみるかな。
早くDebianに取り込まれないかな
>>119
スマン。別のソフトでは使える場合もあった。
ダメだったのはnbench-2.1のHUFFMANのところで
セグメンテーションのエラーが出たところだった。
ダウソ中。それにしてもデカイ・・・
>>67
まだベータリリースだけど、出たみたい。
http://www.geocrawler.com/lists/3/SourceForge/6013/25/8692236/
126デフォルトの名無しさん:02/05/22 00:37
リンカースクリプトってむずかしい
とりあえず、Linuxのカーネルはいける。
Solarisで makeにしっぱいしたよ!!
129デフォルトの名無しさん:02/05/23 02:48
>>111
When you specify `-O', the compiler turns on (中略)
`-fomit-frame-pointer' on machines that can support debugging even
without a frame pointer.
だそうです。(info gccより。)
x86系だと machines that can support debugging even without a frame
pointer じゃないので、-O だけでは -fomit-frame-pointer は付きません。
130デフォルトの名無しさん:02/05/23 03:45
x86系限定ですが、何のwarningも出さずにおかしなコードを吐きます…
$ cat hoge.cc
#include <stdio.h>
#ifndef __stdcall
#define __stdcall __attribute__((__stdcall__))
#endif
#ifndef __cdecl
#define __cdecl __attribute__((__cdecl__))
#endif
void __stdcall print_i(int i) {
printf("%d,", i);
}
void __cdecl print_i(int i);
int main(int argc, char **argv) {
int i;
for (i = 0; i < 20; i++)
print_i(i);
printf("\n");
}
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs
gcc version 2.95.3-5 (cygwin special)
$ gcc -Wall -o hoge hoge.cc
$ ./hoge
0,1,2,3,4,5,6,7,8,9,10,
Segmentation fault (core dumped)
$
attributeって関数のシンボルに反映されないんじゃない?
上書きが警告されないというのも変だけど...
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.4/specs
gcc version 2.95.4 20011002 (Debian prerelease)

$ gcc -c attr.c
attr.c:11: conflicting types for `print_i'
attr.c:8: previous declaration of `print_i'
133デフォルトの名無しさん:02/05/23 23:02
>>132
.c だけじゃなくて、.cc でもやってみよう。
.cc → エラー無し(130)
.c → エラー(132)
135デフォルトの名無しさん:02/05/23 23:14
>>131
上書きっていうより、あいのこになってしまいます。
print_iを呼ぶとき、
__cdecl なら
addl $-12,%esp
movl -4(%ebp),%eax
pushl %eax
call _print_i__Fi
addl $16,%esp

__stdcall なら
addl $-12,%esp
movl -4(%ebp),%eax
pushl %eax
call _print_i__Fi@4
addl $12,%esp

となるはずが、両方指定すると
addl $-12,%esp
movl -4(%ebp),%eax
pushl %eax
call _print_i__Fi@4
addl $16,%esp
になってしまって、どっちやねん!
GNATSで報告してこいや
俺英語ダメだから頼むわ
http://gcc.gnu.org/cgi-bin/gnatsweb.pl
137 :02/05/31 00:16
139デフォルトの名無しさん:02/05/31 03:03
writeとかreadとかを自分で書いたのに置き換えたいんだけど
libcのコンパイルをしなおさないで済ます方法をおしえてくり。
140デフォルトの名無しさん:02/05/31 03:11
>> 139
LD_PRELOADとか使って普通にinterpositioningするんじゃだめ?
141139:02/05/31 03:21
>140
スタティックリンクしたいんだけど。無理かな?
>>139
Linuxだったら/usr/lib/libc.soをテキストエディタで覗くと幸せになれるかもしれない。
143デフォルトの名無しさん :02/05/31 03:42
$cat /usr/lib/libc.so
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a )

これってどういう意味?
144142:02/05/31 04:07
-lcの時、/lib/libc.so.6を見てから/usr/lib/libc_nonshared.aを見るようにできるんじゃないの?
これを利用すれば一部の関数だけオーバーライドできそうだけど。
145140:02/05/31 10:57
>> 139=141
static linkでいいならそれこそ普通のobject interpositioningでOKでないの?

$ cat caller.c
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char** argv)
{
open("/dev/null", O_RDWR);
return 0;
}
$ cat open.c
#include <stdio.h>
int open(const char *pathname, int flags)
{
printf("object interpositioned\n");
return 0;
}
$ gcc -c caller.c
$ gcc -c open.c
$ gcc open.o caller.o
$ ./a.out
object interpositioned
$
146デフォルトの名無しさん:02/05/31 21:22
>>139
そのwriteとかは自分が呼ぶだけ?
それともprintfとかが呼ぶwriteも置き換えたいの?
どっちだろう。
147139:02/05/31 21:49
>146
printfが呼ぶ奴も乗っ取りたいのでシュ!
>>79
笑った。
>>147
それは出来ない。libc作り直せ。
150デフォルトの名無しさん:02/06/01 00:02
>>149
昔のUNIX系の処理系では乗っ取れてしまうものがある。
これって、ANSI C的にはまずいんだけど。
というわけで>>139よ、古いUNIXを探してみたらどうだろう。
151139:02/06/01 01:52
newlib作り直してまーす。
writeとかその辺の底辺チックな分を全部取っ払って
自分libをリンクしないとダメなようにしてみてます。

でも、本当は
#ifndef hoge
void hoge( int fd, char* buf, size_t size){ return 0; }
#endif
みたいな仕掛けを作りたいです。

Javaでいうところのオーバードライブでしたっけ? そんな感じ
Javaでいうところのスーパーチャージャーです。
>>151
ふぁらんじゃーでジェットサウンドの方が効率良いよ。
154 :02/06/01 18:04
gccってどこから落とせばいいの? >>155-1000
www.google.com
アーカイブにチョクリン求む
>>156
何用のどのGCC?
とりあえず http://gcc.gnu.org/ がホームだが
158 :02/06/01 18:14
>>155
ありがとう!ずっと探してました〜!!
160 :02/06/07 16:44
グッシッシage
161デフォルトの名無しさん:02/06/07 16:58
Javaでいうところのオーバードライブage
162デフォルトの名無しさん:02/06/07 17:21
gccのJavaはSwingはおろかAWTさえ使えないんですよね。
これって何か使い道あるんでしょうか。
public class test {
public void main(String a[]) {
System.out.println("hello,World!");
}
}
をコンパイル、実行して「Javaできます!!」と履歴書に書けます。
164デフォルトの名無しさん:02/06/07 19:46
>>163
すばらしい!!
ぼくもgccしたい!!
でもディス鳥TL8はgcc 2.96だ。
よほどバグでもあるんだろうね。3.x
>>164
Debian使え
>>164
Turboがやる機内だけ。
>>164
自分でバージョンageれ。
168デフォルトの名無しさん:02/06/09 10:03
アセンブルしたとき、アセンブラとCとの比較をしたいとき
アセンブラのある行が、Cのどの行がコンパイルされてできたものかを
知りたいときはどんなオプションをつければいいのでしょうか?
>>162
SWTは使えるけどね。
170デフォルトの名無しさん:02/06/09 10:38
標準ライブラリ使ってないのに、勝手にmemcpyとかmemsetとか使われて
リンクエラーになる。
ちょーウザい。どうにかならない?
171名無しさん@お腹イパーイ。:02/06/09 10:53
>>170
-fno-builtin

// -ffreestandingな人なのかな?
172名無しさん@お腹イパーイ。:02/06/09 11:11
>>171
ごめん。
-fno-builtin(あるいは-ffreestanding)するとlinkしようとするってことだね。
逆だね。-ffreestanding -fbuiltinだね。
>171
いやーそれつけてもダメなの。困った困った。
174名無しさん@お腹イパーイ。:02/06/09 12:44
じゃあ、-daとsource codeだ(w
175御茶目菜子:02/06/09 13:31
GCCだって?バカじゃないの?
いまのじだいポケコンBASICじゃんか
176デフォルトの名無しさん:02/06/09 13:39
cygwinとかfreebsdがgcc3.xに移行しない理由はなんだろな〜♪
>>175
BASICスレに逝けよ。

>>176
まだ不安定なんじゃない?
俺の所にもmingwのGCC 3.0があるんだけど、なんか癖有り状態だし。
178御茶目菜子 :02/06/09 14:28
gccなんてうんこだね。
BASIC使えないんだって?
どんくさ〜
179デフォルトの名無しさん:02/06/09 14:42
gcc使ってる奴は在日
180168:02/06/09 15:33
うーん。これってアセンブラのオプション、だよね?
全然わからん・・・
182デフォルトの名無しさん:02/06/10 19:47
>>168
おれもわからん。
-Sのアセンブラ出力にCコードをコメントで入れてホスイってことね。

しょうがないから-g -cで一回objに落として
objdump -d -Sで見てる
183168:02/06/10 21:12
>182
ナイス! とりあえずその手でいかせてもらうよ。
次に生まれ変わった時は、アンタと結婚したいな。
184デフォルトの名無しさん:02/06/10 22:23
>>170
gcc -v してみると、リンクするときに自分が作ったやつ以外の
.o がリンクされてない?(crtなんとか.o とか)
crtなんとか.o とかが原因だったら、そのソースをmemsetとか使わずに
書きなおせばいいんでは。
crt*.oって標準ライブラリにリンクしてあるの?
あれってただのスタートアップルーチンかなって思ってたんだけど。
crt*.oじゃリンクしてないと思うけどなぁ。nmで調べてみ。
どの関数で参照してるかとか、リンカのメッセージに出てないの?
187デフォルトの名無しさん:02/06/10 22:40
>>185
crt*.oって標準ライブラリみたいなもんだけど、それはオプションで切れるよ。

>>184
memsetとかって、例えば構造体とか配列とか作ったときに勝手に初期化するもんで
(最近のgccって賢いよな) それ用にmemsetを勝手に呼ぶようにコンパイルするんよ。
自分で使ってなくても勝手にでてくるんだよね・・・
188187:02/06/10 22:41
誤解招きそう
crt*.oはもちろんただのスタートアップルーチンだよ。うん。
189デフォルトの名無しさん:02/06/10 22:46
http://bbs.fresheye.com/free/27384/denjyarast/
ここには東大を目指す受験生が集まってます
190170:02/06/11 01:08
foo(unsigned int x){
const int hoge[4] = {0x00,0x20,0x33,0x54};
return x<4?hoge[x]:-1;
}

まあこんな関数があったとして、-nostdlib でコンパイルすると
memcpyが必要、とか言われるんですけどなんででしょうか?
アセンブラ読んでもmemcpyなんて出て来ないし・・・
>>170
static const int hoge...

ほんとーにアセンブリ吐かせたか?
192170:02/06/11 01:23
>191
おー素晴らしい。オレが一方的にバカだったみたい。 なるほどね。3日悩んじゃったよ

でもアセンブリ吐かせてmemcpyでてこなかったんだよなぁ。
objdump -D hoge.o | grep mem で確認してたんだけど・・・
193デフォルトの名無しさん:02/06/11 06:14
>>151
ENTRY
194デフォルトの名無しさん:02/06/11 13:05
グッシッシ
195デフォルトの名無しさん:02/06/11 14:24
次のDebianはgcc3.1でパッケージ作るのかな?楽しみー
196デフォルトの名無しさん:02/06/12 12:54
グッシッシ
197g++:02/06/12 13:48
グッピッピ
198h8300-hms-gcc:02/06/14 23:03
static int a; のとき、a++; をコンパイルすると -mint32 をつけてないのに
mov.w @0xfff134:32,r2
adds #0x1,er2
mov.w r2,@0xfff134:32
という感じで32ビットの足し算をしているようです。
いったいなんででしょうか?

また、せっかくINC命令とかあるのになんでgccは
最適化してもそれを使ってくれないのでしょうか?

グッシッシは2.95.3 、対象は3067Fです。
お前が改良しる
>>198
incはUパイプOnlyだからかと。
演算はleaとかaddにしたほうがいい。
201182:02/06/15 01:38
>183
objdump -d -Sだとexternシンボルが-見えないので
objdump -d -S -rのほうが吉。
202デフォルトの名無しさん:02/06/16 06:04
CPUごとってーかアーキテクチャごとに最適化の仕方とかを記した
ファイルがあるらしいのですが、いったいどのファイルでしょうか?

また、それらを改造して自分好みの最適化を編集できるでしょうか?
203仕様書無しさん:02/06/16 07:01
*.mdってファイル。
自分好みの最適化って何?
204デフォルトの名無しさん:02/06/16 07:25
>203
例えばビット演算が装備されてるCPUにおいて
1ビットのビットフィールド使っているときとか
自動的にビット演算命令を使うように
コンパイルしてほしいのですよ。

*.md、見てみます。
205デフォルトの名無しさん:02/06/23 22:26
pragmaって行儀が悪いから使うな って聞いたんだけど、どうなのかな。
行儀が悪い悪くない以前に、pragmaは標準じゃ出来ない拡張を施す物で、
どうしても必要なら使わざるを得ない。
それから#pragmaって書くけど、プリプロセッサが理解する物ではない。
#pragmaは、処理系に定義されてないものが書かれても単純に無視する
だけだけど、偶然違う意味のパラメタの文字が一致したりすると悲惨。最小限に
使おう。
俺が作ったコンパイラは知らない#pragmaがあるとファイルを全て消しにかかるから
気をつけてくれ
>208
こわっ!
>>208
逆ギレコンパイラかよ!
>>208
それはANSI-C規格に沿ってないね。
212デフォルトの名無しさん:02/06/24 00:25
割り込みハンドラを書くと、レジスタの退避を勝手に書き出してくれるけど
どう考えても余計なレジスタ退避までやってて非効率的。
こういう定型処理なところは最適化の対象にならないのかな?
> 割り込みハンドラ

VC++でいうところのnakedはないのかな?
214デフォルトの名無しさん:02/06/24 00:40
おまんこ
>212
割り込みが頻繁に発生するの?効率を気にするほども?
216デフォルトの名無しさん:02/06/26 16:08
MinGWの3.1使ってます。
__gxx_personality_v0
が出ちゃうのはどうにかならんの?
次のlibc待つしかないのかな?
217デフォルトの名無しさん:02/06/27 03:15
g++でコンパイソするとなんとかテーブルっていうのが入ってるから実行ファイルが大きいのですか?
strip汁
219デフォルトの名無しさん:02/06/28 19:52
2.95で-fexceptionsオプションをつけたら、
terminate__Fvが定義されていない、みたいなこと言われました。
これってどうすればいいんですか?
220195:02/06/28 19:59
GCCか。
数値解析屋としてはさらなるチューンを望むな。
リンクもg++でやるか、もしくは-lstdc++オプションをつけよう。
222デフォルトの名無しさん:02/07/02 12:06
GCCのソース見てみたら数学関数がアセンブラになてた。。。
ショック
>>217
2.95.2までは小さかったけど、3.1になってから実行ファイルが大きくなった
みたいだ。おそらくライブラリの大改修が行われてスタティックリンクする
ファイルが増えたと見られる。
224デフォルトの名無しさん:02/07/02 15:20
自慰しぃーしぃー
225デフォルトの名無しさん:02/07/02 19:41
gccは一般にunix等で使われるそうですが、windows版はあるのでしょうか?
(゚∀゚)あるよ
227デフォルトの名無しさん:02/07/02 19:48
gnuサイトにあるのですか?
http://www.cygwin.com/setup.exeでインストール
mingwって今独立してあるんだっけ?
229デフォルトの名無しさん:02/07/02 20:25
インストール途中でフリーズしてしまいます。
どうすればいいのでしょうか?
>>229
ローカルにダウンロードしてからだと上手くいくかも
>>228
MinGWはDev-C++に含まれているので、それを使うと楽。
http://www.bloodshed.net/dev/devcpp.html
ソースはどのディレクトリに置いてとくもんですか?
/usr/src
234FreeBSDキチガイ:02/07/02 21:01
ふつー
/usr/local/src
漏れは~/src/*
236デフォルトの名無しさん:02/07/09 16:53
mingw で gcc3.1 を使ってるんですが、

int main(void)
{
char a[1000000] = "";
return 0;
}

みたいなソースをコンパイルすると、
なんだか巨大な実行ファイルができてしまいます。
配列のサイズを変えれば出力ファイルのサイズも変わるし、
初期化しなければ普通の?サイズになります。

ming の gcc 2.95 では再現しません。
自分が厨なだけで、こんなもんなんでしょうか?
それとも gcc3 以降に新しいオプションでも追加されたのでしょうか?
>>236
1000000バイトの空文字列が初期化用に用意されるためです。
おそらくどのコンパイラを使っても同じような結果になるはず。
>>236
っつーか、空文字列だから、最適化の度合いによっては、0で埋める
ようなコンパイラもあるのか。
>>237はchar a[1000000] = {'\0'}; と勘違いしている。
>>239
同じです。

"abc"は{ 'a', 'b', 'c', '\0' };と等価なので、
同じと解釈するコンパイラがあっても間違いではありません。
241236:02/07/09 22:31
>237
構造体の初期化のように、
配列内の全ての要素が 0 で初期化されるということでしょうか?
なるほどー。
厨で申し訳ないです… 勉強し直してきます。

ちなみに手持ちのコンパイラ(Win32)では、最適化なしで
bcc では gcc3.1 と同じ結果になり、
gcc2.95 と cl は小さいサイズになりました。
gcc3.1 でも -Os をつけるとサイズが小さくなりました。(-O2では駄目だった)
>>240
char *a = ""; と勘違いしていた。鬱氏。
>>238
gcc 2.95.3がそれやってる。
領域を確保して0をmemset
244デフォルトの名無しさん:02/07/10 16:22
mingwの3.1のcoreとやらを入れて、適当なソースファイルをコンパイルしたところ

ld: cannot find -lmingwex

というエラーが出たんですが、これってライブラリが見つからないってことですか?

落としてきたgcc-3_1-core-20020516-1.tar.gzには、それらしいファイルが
ないっぽいんですが?
runtimeに入ってると思う
binutils
core
runtime
(libstdc++)
(make)
(w32api)
(gdb)
必須は上の3つ
247244:02/07/10 16:36
>>245-246
ありがとうございます!助かりました!
なんかしょうもない質問だったのに、即レスありがとうございました
248デフォルトの名無しさん:02/07/10 20:34
javaをnative compileしてどうするの?
249デフォルトの名無しさん:02/07/10 20:40
age
>>248
実行するのでは?
>>248
C++のクラスとリンクできたりして楽しい。
ガベコレはどうなるのだろう。
参照カウントを内部でするような
コードを生成するのかな?
253デフォルトの名無しさん:02/07/11 18:41
age
C++とjavaのインタフェースがあったのか
255デフォルトの名無しさん:02/07/12 23:23
ガベコレはネイティブコンパイルしたときも動作するのか。
当たり前
257デフォルトの名無しさん:02/07/14 14:57
なあんだ
3.*と2.95〜のライブラリって混ぜても大丈夫ですかね
>>258
ディレクトリ分ければ大丈夫
あ、言葉足らずでしたスミマセン
ある共有ライブラリはlibc++(2.95)を使い、
ある共有ライブラリはlibc++(3.0.4)を使っています。
これらを一緒に使っても問題ないでしょーか。
だめ
262デフォルトの名無しさん:02/07/14 22:44
まじですか?
こりゃ困った・・・
>>262
ちなみに、どんな状況なの?
>>260
ライブラリをコンパイルしなおせばいいんじゃないかな
265デフォルトの名無しさん:02/07/15 00:49
最新のgcc-20020708.tar.gz
をとってきて。コンパイルしますた。
だけど
gcc/cp/parse.h
がないとかエラーが出て
とまってしまいます。
だれかコンパイルできてるかたはいますか?
gcc/cp/parse.y
ならあるんですが。。。
266260:02/07/15 01:00
状況ですが、2.95のほうはソースコードのないライブラリです
3.0.4のほうは自前なので、こちらを2.95でコンパイルすればいいんですけどね・・・

ところで、ダメな理由というのはどういうものなのでしょう。
>>265
まずflex/bison通せ
flex/bisonはインストールされてますし、
パスも通っています。
>>268
>>267の通せってのは、パスを通せって意味じゃなくて、
parse.yをbisonに通せって意味じゃないの?
configureでflex/bisonが見つかれば、必要に応じて自動的に呼んでくれるんじゃないの?
271デフォルトの名無しさん:02/07/15 11:02
Linux上でGCC使ってるんですけど、エラーメッセージを
ファイルに落とすオプションって何なんでしょか?
検索かけたり、日本語マニュアルを読んだりしてみましたが
載ってないようなんです。

3年程前に参加していたプロジェクト(別の会社)では、確かに
エラーメッセージをログファイルに落として、それを元にエラー修正を
行っていたはずなんですが・・・当時の資料は当然持ってないので、わかりません。

誰か教えてください〜〜!(T-T
>>271
ねた?
273271:02/07/15 11:19
いやマジで。マニュアルに載ってないでしょ?
>>271
(゚∀゚)はい、どうぞ >&
>>273
GCCのマニュアルには載ってないだろうな、当然。
man sh
漏れもネタ書こうかと思ったけど>>271にはかないません。
277真271:02/07/15 12:14
いっぱい釣れた(w
>>277
恥ずかしいから篭ってていいよ
279デフォルトの名無しさん:02/07/17 10:04
保守
280デフォルトの名無しさん:02/07/18 13:26
gcc で Windows 向けの商用アプリ作っている人っているんでしょうか。
281デフォルトの名無しさん:02/07/18 14:11
メーカーサポートとMSDNがあるんでVisualC++を使います。
282デフォルトの名無しさん:02/07/18 14:35
 Mingw32 をソースからビルドしたいのですが、ソースの入手
先と、ビルド方について分かりやすく解説したページなど、
ございませんか。

 ところで、Mingw32 のソースは、Mingw32 そのものでビルドす
るのでしょうか。VC++ などでコンパイルするのでしょうか。
ビルド方--->ビルド法です。
スマソ
バイナリを配布してるとこと同じところにソースあるんでねーの?
Mingw32ってGPLだろ?
保守
286デフォルトの名無しさん:02/08/03 12:27
win32でgcjをビルドした人っています?
287デフォルトの名無しさん:02/08/03 17:38
AthlonXPに対してVisual C++とGCCで作った、エンコーダなどのバイナリで
どちらが速いかを比べてみたいのですが、GCCでWindows2000のDOS窓で動く
バイナリは作れるのですか?
どうもCygwinという環境の中でないとだめのようですが。。。
GNU + Cygnus(省略)

>>287
CygwinでもMingwでも落としてください。
>>288
ありがとうございます。
ひとつ賢くなれます太。
>>287
cygwin 版の gcc で cygwin1.dll を必要としないバイナリを作りたいなら、
コマンドラインオプションに -mno-cygwin つければ良い。
mingwパッケージを入れないと出来ない
292デフォルトの名無しさん:02/08/04 20:21
__attribute__って結構面白いよね。
dllimport系以外、大抵はlibc位でしか使わないけど、
formatなんかは普通に便利。使っている人いる?
意味わからん
どういう物なのか教えてくれ
>>292
ハードウェアよりのコードを書くときには、aligned は良く使ってる。
295デフォルトの名無しさん:02/08/04 22:50
>>294
>aligned
その手があった! もっと早く言ってくれよ・・・ もう手遅れだ
>>293
#pragmaみたいな非標準実装依存のqualifier。

例:
http://www.cygwin.com/ml/cygwin/1999-02/msg00484.html
297デフォルトの名無しさん:02/08/14 15:48
RTLお勉強再開あげ
>>252
boehmのソースを見るのがよろし
http://www.geocities.co.jp/WallStreet/6351/alpha.html
このサイト、なかなか参考になるかも<RTL
300デフォルトの名無しさん:02/08/15 21:55
ast-optimizer-branch を使ってる人はいますか?
おもしろいサイトを一つ見つけたので貼っときます
http://gccintrospector.blogspot.com/
ここはGNU C Compilerのスレ? それともGNU Compiler Collectionsのスレ?
Cllectionスレでしょ。
gcjでもgnatでもいいんじゃない?
使ってる人少なそうだけど。。
304not302:02/08/15 22:48
>>303
gobjcって、使っている人多いのかな。
mingwのgcjを待ちわびているのは俺だけですか?
306デフォルトの名無しさん:02/08/17 10:27
c99に対応するのはいつだ?
もう対応してるんじゃないの?
pragma全部対応してない
>>306>>307
http://gcc.gnu.org/c99status.html

ちなみにgcc-3.0.4では-std=c99付けないとC99の機能を使えない。
-Wall付けるとpragmaでwarningが出るんだけど
pragmaのwarningだけ止めれないかな?
311デフォルトの名無しさん:02/08/17 22:55
良く分からんのですが、C99の仕様は完全に満たしている、
ということでしょうか?
C++はまだ追いついてませんよね?
gccがexportを採用すれば最強なんだが。
>>310
gccはそのへん弱いよね。俺も知りたいよ。
VCみたいに番号で抑制できればいいのにね。
>>311
まだ完全ではないがすでに仕様の大部分に対応しているということ。

> C++はまだ追いついてませんよね?

でも、3.xになってかなりまともになったよ。

boostというC++の最新の機能をバンバン使ったライブラリでregression test
した結果、
http://www.boost.org/status/compiler_status.html
http://www.boost.org/more/regression.html
http://boost.sourceforge.net/regression-logs/cs-win32.html
単純にfailの数からすれば、GCC-3.1はVC++やIntel、BCCよりまともらしい。
他がダメなだけなのかもしれないけどね。
gccは最適化が弱い
VCはおろかWatcomにも負ける
>>315
どこかに統計的な資料がある? 昔、C++ でマルコフ情報源を使って適当な
文章を書き出すプログラム(プログラミング作法で使ってたヤツね)を走らせて
みたんだが、コンパイラの差よりも STL の実装の差の方が大きかった覚えが。

(資料どっかにやってしまったが)
vectorのreserveで1000000000ぐらい確保すると
bad_allocをキャッチ出来ないでout of memoryって表示されて終了。
多分stlの実装の問題だと思うんだけど、
これなんとかなりませんか?

gccは2.94です。
318315じゃないけど:02/08/18 02:44
>>316
1998年の資料なんであんまり参考にならないけど、
http://www.geocities.com/SiliconValley/Vista/6552/compila.html
によると、VC++よりは悪いけど、Watcomとは同じぐらい、表には載ってない
がBorlandやSymantecより良かったらしい。

新し目の資料として、Athlonで各種暗号アルゴリズムに対する計算速度の
比較をgcc-3.04, Intel C++ 6.0, KAI C++ 4.0eに対して行ったものがある。
http://www.randombit.net/misc/x86_comp.php

ちなみに、
... this test is only a comparison of integer code. ... So please
only consider these results useful if your application is also
heavily integer-based.
という条件付きなので注意。

これによると、条件付きとは言えAthlonではgccはIntel C++より良いらしい。
VC++の最適化はだいたいIntel C++と同じくらいのようだから、Athlonでは
gccの方が良さそう。

なので、gccの最適化が弱いというのはAthlonでは当てはまらず、巷のgcc-3.x
Athlon最強説は正しいっぽいと思われ。
319317:02/08/18 03:11
自分でstlヘッダ書き換えて直しました。
こういう実装があるからstlは嫌いなんだよな。
stlのヘッダを書き換えずにアロケータを書き換えるか、
もっと下のレベルのnewを書き換えるとかするべきじゃないの、本来は。
321デフォルトの名無しさん:02/08/18 03:50
>>317
STLport じゃだめかな?
322317:02/08/18 03:54
>>320
言葉足らずスマソ、書き換えたのはアロケータです。

ところでスレ違いかも知れんが、ドラフトに完全準拠してる処理系ってあるのかな?
athlonだけで最強でもなあ...
>>322
なんでISじゃなくてDraft準拠なわけ?
ワロタ
草案に準拠って何ダロね
>>323
でも、gccの最適化はダメという説に対する反証にはなるよね。

gcc-3.xのPentium IIIやPentium IVでのベンチマークがあればはっきりするんだけど、
見つからなかった。

これも少し古い資料なんだけど、Pentium IIIでのgcc-2.95とintel 5.0とVC++ 6.0
の比較。
http://www.open-mag.com/features/Vol_15/IntelC/intelc.htm

On Linux, numerically intense CPU performance improved by 47% compared to GNU C v2.95
On Windows, numerically intense CPU performance improved by 37% compared to MS Visual Studio.
なんで、gcc-2.95とVC++ 6.0の差はそれほどではないが、gcc-2.95とintel 5.0の差は
大きいということになる。

でも、今のところ規格準拠度が他より高く、非常に多くのプラットフォ−ムに対応し、
一通りの最適化をしてくれる上、フリ−なんだから、普通に使う分には十分な性能だと
思うけどなあ。数値計算とかなら金払ってカリカリに最適化してくれるコンパイラを
買えばいいだけだし。
>>326
> 普通に使う
その「普通」に、実は 326 固有の使い方が投影されている可能性が高いと
思うが……。

なんにせよケースバイケースで、gcc が十分、あるいは gcc がベストの選択肢
となる用途もある。ただ、それを「普通」というと解釈が食い違ってフレームになる
可能性が高いから、ちと気をつけてくれ。
>>327
そうか?

「普通」というのは実行速度が極めて重要な分野など特別な事情がある場合以外
という意味だよ。

例えば、数値計算分野では、基本的に今まで計算機では計算できなかったものを
計算することに意味があり、どういう方法でもいいから速度が上がれば今まで計算
できなかった問題に対応できるようになるので、計算速度が一番重要。

でも、数値計算以外ではそこまで実行速度は重要ではないでしょ。むしろ、手軽に
入手でき、手元のプラットフォ−ムで規格に沿ったプログラムをちゃんとコンパイル
できるほうが重要。

全体的に見て、今のgccには大きな欠陥がなく他より優っている部分の方が多いん
だから、特別な事情がなければgccがbetterな選択になると思われ。

> なんにせよケースバイケースで、gcc が十分、あるいは gcc がベストの選択肢となる用途もある。

これってgccを別のものに置き換えても成り立つじゃん。

> それを「普通」というと解釈が食い違ってフレームになる可能性が高いから、ちと気をつけてくれ。

特別な事情がない場合を「普通」と呼ぶのがそんなに変か?
>>328
> 「普通」というのは実行速度が極めて重要な分野など特別な事情がある場合以外
> という意味だよ。
「特殊」は「普通」の裏返しだからな…

少なからず開発者人口がいる Win32 の分野なんかだと gcc は

- プリコンパイルヘッダに対応していないので <windows.h> 読み込むだけで
 時間かかりすぎ。
- UNICODE 対応がイマイチ
- 最新の Platform SDK に対応していない
- MFC, ATL/WTL, VCL といったクラスライブラリが提供されていない
- BoundsChecker のようなリソースリークを検出するツールなど、サードパーティ
 製品が充実していない

といった理由で、お奨めとは言いにくい。

「特別な事情」とか「普通」とか言わずに、具体例で示した方が話が建設的な
方向に進むと思うが、どうか?
>>326
> でも、今のところ規格準拠度が他より高く、
完全に準拠しているわけではないので、目糞鼻糞。
> フリ−なんだから、普通に使う分には十分な性能だと
性能の話しにフリーかどうかを持ち出すのはおかしいだろ。

漏れはgcc愛用してるが、少なくとも最適化は駄目だ。
信者じゃないんだったら駄目な部分も認識しておこうよ。
(athlonで最強ってのも、それこそ「普通」はathlonなんか使ってない)
>>329
そっちのほうが「特殊な事情」じゃないのか?
>>329
ちなみにWin32に限らずgcc-3.0のコンパイル速度は遅い。今まで誰も突っ込ま
なかったのが不思議なくらい。

まあ、たしかに、Win32だとgccは使いづらいかも。でもgccの問題というより周辺
の開発環境の問題だという気がする。

>>330
> 性能の話しにフリーかどうかを持ち出すのはおかしいだろ。
入手できないければ意味ないじゃん。入手できないコンパイラの性能は実質0だ。
C&C++最新規格完全準拠、最適化も最強、でも値段が1億円でライセンスガチガチ
だったらあんまり意味ないだろ。個人だとVC++すら買えんやつ多いぞ。

> 少なくとも最適化は駄目だ。
その根拠が知りたいんだけど。

よくgccの最適化は駄目だ駄目だって言われている割には具体的なベンチマークがあん
まり出ていないんだよね。コ−ド読んで最適化手法として教科書通りのことしかやって
いないから駄目って言うかもしれないけど、他のコンパイラがそれ以上のことをやって
いるとは限らないし。

たしか、egcsの1.1とVC++ 5.0あたりでは最適化アルゴリズムはほとんど同じだが、egcs
ではコ−ドが不完全で遅かったりミスコンパイルすることが多い、そこがegcsとVC++の
差だったって話を聞いたことがある。

x86以外ならともかく、gcc-3.xマンセーマンセー言ってathlon向けにgccでコンパイルして
いるフリーソフトの開発者がそこそこいるのに、一方では粘着チックにgccの最適化は
駄目だ駄目だと言われ続けているのが不思議でたまらない。
特殊な場合/普通の場合なんて曖昧な良い方しないでさ、例えばLinux+Athronで
STL使わなければホゲホゲぐらい出るからフガフガだって言えばいいんでないの?
普通/特殊なんて人によって違うんだからさ。

// 本筋(どの場合にどの程度のパフォーマンスが出るのか)に関係ないからsage。
LinuxならIntelのコンパイラがタダであるし、
WinならVC++とIntelのがあるな。
標準準拠度もComeau C++ + VCで最強だが。
>>332
> 入手できないければ意味ないじゃん。
意味があるかどうかを決めるのは俺たちではなくて、ユーザの側だ。

332 の価値基準で「普通」とか「高価で買えないから無意味」とか言っても、
そんなことは誰も興味ないわけで。判断材料の一つとして

 gcc は無料というのはメリット

って形で提示しようよ。
336デフォルトの名無しさん:02/08/18 20:53
>LinuxならIntelのコンパイラがタダであるし、
30日だけ??
>>332
むかーし、簡単な比較したときの書き込みを見つけた。てっきりム板だと思ったら
UNIX 板でやってたのか。

C++って使わないの??@UNIX板
http://pc.2ch.net/test/read.cgi/unix/1004227343/257
http://pc.2ch.net/test/read.cgi/unix/1004227343/265
http://pc.2ch.net/test/read.cgi/unix/1004227343/290

使ってる STL 自体がバラバラなんで、アレなんだけど。手元にいろいろ処理系
揃えてる人、いたら全部 STLport で統一してベンチマーク採ってみない?
>>336
は?評価版じゃなくて非商用版だよ
>>326>>332
こんなページ見つけた。

Linux Pentium III上でのIntel C++ 6.0とgcc-3.0.4とgcc-3.1の比較。
http://www.coyotegulch.com/reviews/intel_comp/intel_gcc_bench2.html

gcc-3.0.4の時点ではIntel C++の方が上という結論だったけど、この記事を
書いた直後に出たgcc-3.1で比較したら、gcc-3.0.4より悪くなっている場合も
あるけど、Intel C++よりgcc-3.1の方が速い場合もあり、どっちが上という
わけでもないという結論に変わったらしい。

これを見る限り、gccの最適化はもう駄目と言わせないレベルになったと
言ってもいいじゃないかな。
>>332
> > 性能の話しにフリーかどうかを持ち出すのはおかしいだろ。
> 入手できないければ意味ないじゃん。入手できないコンパイラの性能は実質0だ。
> C&C++最新規格完全準拠、最適化も最強、でも値段が1億円でライセンスガチガチ
> だったらあんまり意味ないだろ。個人だとVC++すら買えんやつ多いぞ。
「性能の話に値段は関係無い」って意味が分からないの?
そこで自分勝手な妄想コンパイラを例にあげるなよ。
で、普通とか特殊とか値段とかそういうfjチックなage足取りはどうでもいいから、

gccの最適化機能は、Intel C++やVC++と同レベルで、十分な最適化を行っている
っていう結論であってる?
つーか、コンパイラの最適化での実行速度の差が
問題になるアプリケーションっていまだにあるの?
>>342
ほとんどないだろーよ。
それが問題になる状況ってよっぽど「特殊」なんだけど、
ここの人たちがこれにつっこまないのがフシギ。

で、Draftに準拠(藁)の話はどうなったの?
>>342
もちろん、山のようにある。問題にならないアプリケーションも山のようにある。
そこらのPCで動くアプリでは、今や速度なんて問題にならない
アプリケーションがほとんどだと思うんだけど、
"コンパイラまかせで" 速度をアゲなければならないアプリを
具体的にアゲてもらえませんか?

MPEG4コーデックなんかはMMXなりSSE2なり使えばいいんだから除外ね。

シミュレーション屋さん?計算屋さん?天文屋さん?
Pentiumなんていいからさ、Itaniumの方はどうなのよ。
プロセッサ自体が出回ってるとかそういうことじゃなくて、、、
イタコンは漢のコンパイラって感じがするんだけどよー

intelとvc++とgcc、これについてはどんなもんでしょ。
Itaniumは専用コンパイラじゃないと性能発揮できないんでねーの?
なんか芳しいガキがまぎれこんだな。
ここはgccスレなんだよ。PC小僧はすっこんでろ。
>>345
> "コンパイラまかせで" 速度をアゲなければならないアプリを
> 具体的にアゲてもらえませんか?
それは問題定義が変。

速度を上げたければ、アセンブラで書くなり CPU 早いのに入れ替えるなり
方法はいくらでもあるわけだが、

 コンパイラの最適化が優れていることで、利益が出る

ならば、最適化が優れているコンパイラを選択することに意味がある。
アセンブラだと性能と開発費(人件費・時間)のトレードオフが発生する
から、コンパイラに任せた方が安上がりってケースもあるしさ。

あと IA-32 限定で話をする必要もないと思うが。
>>348
どうしても「gcc最高!」って叫びたいヤツが紛れ込んでるよな。
べつにgccがある面で他に負けてるからと言って、そいつのせいじゃないし、
冷静に比較検討すりゃ良いだけなんだが。
VC++ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> gcc
>>350
逆に「gcc最低!」って叫びたい香具師も紛れ込んでいるよね。できる
だけ根拠を出して議論してほしいなあ。>>351みたいに。
>>352
あ、>>351は「gcc最低!」って叫びたい香具師って意味ね。
>>352
> 逆に「gcc最低!」って叫びたい香具師も紛れ込んでいるよね。
いや「最低!」を主張するのは難しいと思うが。

lcc-win32 とかあるし。lcc は元々が「コンパイラの仕組み」を説明するための
教育用の処理系で、高度な最適化よりも単純な実装を優先してるから、仕方
ないと思うけど。

……もっと言えば、俺が昔、勉強がてら書いた処理系は、さらに酷い(w
>>354
論理的にgccを否定するならいいんだけど、そうじゃなくて、なんでもケチ
付けるアンチがいるでしょ?

まあ、死んじゃと安置の煽り愛は2chの鼻だからいいんだけどね。
gccは移植して使ってなんぼっていうものでしょ
>>355 文字から受ける印象と文意がかなり違うなあ、と珍しく思った。
>>356
gcc ってターゲットのアーキテクチャによっても、出力コードの良し悪しが
あるよな。IA-32 はユーザ数も多いし歴史も長いから、全く心配要らんけど。
>>358
そんなマイナーなものに使ってるの?
>>358
いや、一番枯れてんのは68k用だよ。
IA-32はアーキテクチャ的にはgccには不利。
これはgccのせいというよりIA-32が思いっきりカスなだけだが。
>>352
>できるだけ根拠を出して議論してほしいなあ。>>351みたいに。

VC >>>>>>>> gcc っつのも大して根拠ないやろ。
小手先の最適化で勝っても(そら他チップに対応してないし
ホームベースなんだからgccに負けたらアホやな)
Windowzはシステムが思いっきりカスやしね。
MCI コマンド MCI_WAIT で送ってみ、デバイスからリターンするまで
ビジーループで待っててスレッドのCPU使用率100%や。(ワラ
1クロック短くする前にシステムのカスな部分がなくなってから
自慢してや。>> VC擁護派
>Windowzはシステムが思いっきりカスやしね。
gccマンセー派だが、コンパイラの議論には関係ないと思う。

# ネタをネタと…だなw
GNUハッカーさんがお見えになりますた。
>GNUハッカーさんがお見えになりますた。
いつかそう言われたいもんだ(笑)
(゚∀゚) gccっつーか、GNU御用達環境の最大のメリットは移植性じゃないか?
ほとんど脳みそ使わずにi386からARMやらSH4からH8までサポートできるし。
なんつーか、メリットってそれだけだけどな。 あ、あと商用でもタダってのも。
>>365
> ほとんど脳みそ使わずにi386からARMやらSH4からH8までサポートできるし。
新しいアーキテクチャに対応する場合には、さすがにもうちょっと苦労するぞ。
組み込み用途なんかだと binutils と合わせて

- 対応アーキテクチャが多い
- 新しいアーキテクチャにも md ファイル書けば対応できる
 (既存のアーキテクチャの変種だと、特に簡単)
- クロスコンパイラが作れる

っつーあたりは、大きなメリットだな。

> なんつーか、メリットってそれだけだけどな。
また余計な一言を……。
367デフォルトの名無しさん:02/08/20 10:07
あと、__atribute__が面白いこととか。
いや、文式のほうが便利だ。
gcc依存コードなんて書く奴はアフォ
gcc では -ansi と -pedantic を必ずつける!
>>370
基本じゃないのか? Makefileに書いてしまうけど…。
>>369
ヘッダがgcc依存している罠
373デフォルトの名無しさん:02/08/21 11:15
>>366
>>また余計な一言を……。
デメリットを知っていながら隠さなくても

>>(既存のアーキテクチャの変種だと、特に簡単)
へぇ、簡単にできるのか。
>>373
> デメリットを知っていながら隠さなくても

デメリット指摘してないだろ?
>>365
> なんつーか、メリットってそれだけだけどな。
これじゃ、単に煽ってるだけだ。
>>374
日本語知らない奴に突っ込むなよ。
>>318
> VC++の最適化はだいたいIntel C++と同じくらいのようだから、

の資料は?
377名無しさん@お腹イパーイ。:02/08/22 09:58
>>339
> これを見る限り、gccの最適化はもう駄目と言わせないレベルになったと
> 言ってもいいじゃないかな。

つーか、対VC++で「駄目」なんて言えるほど、極端に差が出たベンチ見たことない。
CPUたくさん対応してるから遅いだろうという思い込みや、
「駄目」ということにしたい人間がフレ廻っているだけと思われ

IntelやIBMが自社CPUに作ったcompilerはブッちぎりの速さなことがよくあるけど。

>>329
コードの最適化の話から外れてるじゃん(w
>>377
>IntelやIBMが自社CPUに作ったcompilerはブッちぎりの速さなことがよくあるけど。

漏れの環境ではインテル C++ コンパイラはかなり速くなったよ。

このサイトで日本語ヘルプが落とせる模様
http://www.xlsoft.com/jp/products/vtune/perftool.htm

ってかペンチの話だよね。漏れもベンチみたことないな・・。
横槍スマソ 逝ってきます・・・
379329:02/08/22 12:38
>>377
> コードの最適化の話から外れてるじゃん(w
何か問題が?
380デフォルトの名無しさん:02/08/22 18:01
gcc 2.95で、

F:\開発\SRC\HOGE.CPP(108) : Error : Symbol '_vt.10CHoge' not defined
F:\開発\SRC\HOGE.CPP(108) : Error : Symbol '_vt.10CHoge' not defined

というエラーが出てしまいました。リンクエラーっぽいのでmakefileを
確認してみたのですが、何度見直してもミスしている様子はありません。
3時間ほど、いろいろ試してこのエラーと格闘していましたが、結局、私の力
だけでは解決できませんでした。
全く同じエラーメッセージがふたつ出てくるのもなにか怪しいですが……。
なにか、「こういうところはチェックしたか?」というヒントのようなものを
いただけたら有難いです。
>>329
>少なからず開発者人口がいる Win32 の分野なんかだと gcc は
>といった理由で、お奨めとは言いにくい。
それで何か言った気になってるの?おまえあほだろ。
Windowsでの一番いいコンパイラはVBに決ってんだろ。
いちばん早いのはRubyです。
383デフォルトの名無しさん:02/08/22 22:10
gcc でSTL使うとエラーがでるのですが、
コンパイルオプションは何をつければいいのでしょうか?
(cygwin gcc 3.2 です。)
>>383
エラーメッセージは?
385383:02/08/22 22:26
こんな感じです
/cygdrive/c/DUCUME~1/......
undefined reference to std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string[in-charge]()

ld returned 1 exit status

>>383
とりあえずコンパイルオプションに -v つけて実行した結果を見せてくれ。
>>383
g++でコンパイル汁!!
388383:02/08/22 22:37
gcc -v test.cpp > out.txt

実行結果を出力できないのですが、
どうすればできるのでしょうか。
(out.txtに何も書き込まれない)
>>380
リンクのコマンド
390デフォルトの名無しさん:02/08/22 23:43
gcc2.95.3で -fprofile-arcs を付けてコンパイルして実行した後
-fbranch-probabilities を付けてコンパイルしても
同じ実行ファイルが生成されるのですが
どうすれば違うファイルが生成されるようにできるのでしょうか
>>388
gcc -v test.cpp 2>&1 > out.txt
392383:02/08/23 00:35
>>391
やってみましたが、テキストには出力されませんでした。...
その後、古いcygwinディレクトリをすべて削除し、installし直したら
g++でコンパイルできました。
>>384,386,387 ありがとうございました。
GrahamCentralCtation
394377:02/08/23 09:48
>>378
いや、Intelの方が速いことが多い、と言ったつもり。分かりにくい文章でスマンが。

MIPSのコンパイラも(当時は)滅茶速いコードを生成した。
しか「も」データフロー解析アルゴリズムが美しい。
395デフォルトの名無しさん:02/08/23 14:01
>394 MIPSのコンパイラも...データフロー解析アルゴリズムが美しい。
ぬ?GCCについての話じゃないけど、どう美しいか知りたいんいん。


小野寺めぐみのお○んこも美しい。
どう美しいか聞かれても答えようがない。
397デフォルトの名無しさん:02/08/23 18:47
>>396
オパーイモナー
名器係数を定めるとか
399395:02/08/23 19:24
>396
そういう時は、詳細がわかる参考文献あげて「これみろやゴルァ」とかするでしょうよ。
というわけで小野寺某の「おあんお」や「おあーい」の
詳細がわかる参考文献強くきぼんぼん。
エロバディXとかが参考になるかとおもわれ
401デフォルトの名無しさん:02/08/24 14:49
今 gcc-3.2 のコンパイルしようとしているんですが、
その前に binutils-2.13 を入れた方がいいんでしょうか?
良く分からんのですが…

現状はこのような環境になっています
gcc 2.95.3-2vl20
binutils 2.11.90.0.8-8vl5
アーキテクチャの 3つ組はなによ。
sparc-sun-solaris2.8 で binutilsをいれてはあったことならあるが。
Slackware使ってるけど、binutils 2.12.90.0.9とgcc 2.95.3で普通に
コンパイルできた。昔みたいにコンパイルに丸一日…ってわけでもないだろうから、
とりあえずやってみてはいかが?
404デフォルトの名無しさん:02/08/24 18:10
i386でVine linux 2.5
kernelのバージョンは2.4.18-0vl3ですね
今とりあえずやってます。。
3.2のマニュアルが英語でちょっと良く分からなかったんですが、
とりあえず $ make bootstrap で。
http://www.asahi-net.or.jp/~wg5k-ickw/
↑ここに 2.95.2 の訳があるんですが、これって参考になりますかね?
なんか、結構変わってるようだったんで、
見るだけにしといたんですが。
405デフォルトの名無しさん:02/08/24 18:11
gcc4.2って使い心地どう?
406デフォルトの名無しさん:02/08/24 18:21
>>405
>gcc4.2って使い心地どう?
( ゚д゚)ポカーン
407デフォルトの名無しさん:02/08/24 18:32
gccは思ったより簡単にコンパイル&インストールできるよね。
glibcは・・・
使い心地…俺は使いモンにならないと思うが…。コンパイルできないモノとかあるし。
時間が解決するもんだと思うよ。
409デフォルトの名無しさん:02/08/24 18:41
>>408
ネタ?
410408:02/08/24 18:56
いままでVBしか使ったことがなかったんです。(;´д⊂)
411デフォルトの名無しさん:02/08/24 19:28
正直でよろしい
412409:02/08/24 20:35
>>410は偽者じゃないかと勘繰る俺
正直>>408の発言の真偽もさっぱり分からん俺
てゆうか最初gcc4.2が、さも実在するかのようにレスする
タイプのネタだとオモタ
413408:02/08/24 21:38
…あー3.2のつもりでレスしたんだが。
414デフォルトの名無しさん:02/08/24 21:46
今終了しました。pentium233で7時間…
javaとかadaとかfortranとかobjective-Cとかのフロントエンドも
全部コンパイルしちまった。使わねーけれども。
ああもったいね…。ソースからコンパイルすると、アンインストール
できねぇじゃん。make uninstallもダメだって
find -ctime -1 -exec rm {} \; とかでやればいいか…
>>408
数ヶ月前、GNATSに登録したけど、まだ直ってないらしい。
結局ソースを直す羽目になる。
つーかマジでgcc, binutils, glibcの間に依存関係とかってあるんですか?
古いgccと、新しいgccでは、binutilsのコンパイル結果が違うから、
新しいの作ったら、binutilsも作り直さないといけないとか。
厨でゴメンヨ!
卵が先か、鶏が先か…ってか(笑)
glibc2.2.5も無事作れました。
gcc3.2だと構文エラーっぽいものが出たので、2.95でやってみたら問題なく。
windowMakerのドックアプリ試しにコンパイルしてみて、
ちゃんと出来てたし、多分大丈夫だろうと思います。…
>>416
オブジェクトフォーマット(elf/coff等)が同じであれば基本的には問題ないはず。
デバッグ情報とかがうまく生成されないとかいうのがあるかもしれんが、
出来たバイナリを使うだけなら問題ない。
おいらは、同じ時期にリリースされた or binutilsが新しいのを使うようにしてる。
続き
glibc忘れた。
glibcはドキュメントに書いてあるバージョンを使えばいいんじゃない?
みなさんのgccを使うプラットフォームはなんですか?
私はLinuxや*BSD全般です。
>>421
SolarisとFreeBSDとcygwin
>>421
Cygwin と FreeBSD と PS2
FreeBSD プ
425416,418:02/08/27 23:49
微妙な遅レスですが、レスサンクスでした
glibcは確かに面倒臭そうですね
コンパイル自体は簡単だったけど、入れ替えるのが…
割と長期戦というか、少しずつ情報集めながらやらないとダメかも。
まぁ精進します。では
>>424
むしろ、Cygwin プだろ。
ニポンジンのミナサンはNetかOpenツカイマショウ
428デフォルトの名無しさん:02/08/28 02:56
g++って、最近のリリースでも、やっぱり空ループは消してくれないのですか?
429デフォルトの名無しさん:02/08/28 03:20
Red Hat7.1に入っていたgcc2.96を今使ってるのだが
gcc3.2に移行を考えてます。

最適化とかは速くなっているのでしょうか?
最適化は速くならないだろ、うん。
>>428
そんなコト聞いてる時点でgcc3.2なんて使えない。気になるなら自分で調べれ。
できんのなら大人しくgcc 2.96.xか他のコンパイラでも使ってろ。

>>429
>Red Hat7.1に入っていたgcc2.96を今使ってるのだが
>gcc3.2に移行を考えてます。
ワラタ
429じゃないけど、さっき3.2に移行したけど何か?
>429
はなんか笑える話なのか・・・?
空ループってプログラマが消すものなんじゃないの?
434428:02/08/28 08:47
>>431
なんで煽られてんだ?

「消してくれる」ことはないみたいですね。
> ...the current behavior is both sub-optimal and inconsistent
> and will change in the future.
この記述ってけっこう古いバージョンから変わってないみたいだけど、
ほんとで変えるつもりがあるのかが、気になります。

>>433
じぶんでループまわしてるとこはそれでいいんですけど、
テンプレートの中に書いてあるループがヤバ目のコードを吐いたりします。
>>425
両方入れておけば。ディスク食うけど。
様子を見ていらん方を消せばいい。

> C:\DOCUME~1\usrname\LOCALS~1\Temp\ccaQaaaa.o(.text+0x20):voice.c: undefined reference to `PlaySoundA@12'

 厨ですが失礼します。
 MinGWを最近いじり始めたのですが、こんなエラーが出て。
 いちおー匿名にしました( 'usrname\ ')が、他はメッセージ通り。
 スイッチは特に指定なし。

 今まで他環境で日本語化されたGCCだったのでいまいちピンと来ないのだけど、
これってリンカエラーですか?
 SorceForge.net で関係ありそうなバイナリは全て入れたつもり(教本掲載の窓だけ
表示するサンプルはコンパイル出来る)だけど、まだパッケージが必要なのかな〜。
>>436
ライブラリがリンクされてないだけじゃないの?
リンク時のオプションの最後に、
-lwinmm
をつければ大丈夫じゃない?
Simpleなねーみんぐのスレっすな
439436:02/08/30 23:07
 いえ、変わりませんでしたね。
 これで私のタイプミスだったら御笑いなんですけどね・・・(^^;
>>436
w32api いれてる?
コンパイル時のコマンドラインは?
gcc -o hoge.exe hoge1.o hoge2.o -lwinmm
みたいなのでは駄目?
441デフォルトの名無しさん:02/08/31 00:37
cygwin で gcj を使って javaのコードをコンパイルしたのですが、
マルチスレッドのプログラムが動きません。(;´д⊂)
情報を探していたら、GCC の non-bugs として下記の記述がありました。

Exceptions don't work in multithreaded applications.
You need to rebuild g++ and libstdc++ with --enable-threads

gcjも同じように --enable-threads を付けて自分でコンパイルすれば
マルチスレッドで動くのでしょうか。。 それとも
MinGWのgcj対応に期待して、とりあえず待っといたほうがいいかな。
>>441
これを機にコンパイル方法を覚えてしまうとか
443436:02/08/31 16:29

 まずは、ごめんなさい。
 >436 でスイッチ指定してないとか書きましたけど、んな訳ないですね。
 バッチで処理しているからいちいち記述しないだけで、バッチ内ではこんな感じです。

> gcc -mwindows -owmp wmp.c

>>440
 はい、入れられる物は全て・・・と思ったけど確認してみたら入れてないし。
 w32api-2.0 を慌てて入れました。
 でも、変わらないです(^^;

 と言うか、重月程度しかまとまった日本語資料知らないのですが、
どこか御勧めのサイトってありますかねえ?
 皆さん、原文直接読めるんですね・・・。
>>443
PlaySoundA をインポートするためのライブラリが libwinmm.a 。
それが見つからないっていってんだから、リンクさせてやればいい。
この場合だと、
gcc -mwindows -owmp wmp.c -lwinmm
これで駄目なら、インストールがうまくいってないか、ソースが間違ってる。

とりあえず、gcc のマニュアルと MSDN くらい読んどけ。
445デフォルトの名無しさん:02/09/01 20:15
gprofについて教えてください。どのように出力を読めばいいのでしょう?
各関数の呼び出し回数はわかるのですが、かかった時間がようわかりません。

下にあるのが実際にgprofが出力したものの一部です。
mcountというのは計測用に自動で生成された関数だということですが、これが
実行時間の約90%も占めているという意味ですか?プロファイルしないで実行
しても実行時間が 1/10 には到底ならないのですが・・・。

> Flat profile:
>
> Each sample counts as 0.01 seconds.
> % cumulative self self total
> time seconds seconds calls s/call s/call name
> 63.14 10.04 10.04 _mcount
> 24.97 14.01 3.97 mcount
> 1.76 14.29 0.28 __get_eh_context
> 1.57 14.54 0.25 24791361 0.00 0.00 vector<LR_item, allocator<LR_item> >::~vector(void)
> 0.94 14.69 0.15 28433081 0.00 0.00 void vector<LR_item, allocator<LR_item> >::_M_assign_aux<LR_item *>(LR_item *, LR_item *, forward_iterator_tag)
> 0.94 14.84 0.15 eh_context_static
> 0.82 14.97 0.13 24791361 0.00 0.00 allocator<LR_item>::~allocator(void)
> 0.69 15.08 0.11 28433081 0.00 0.00 void vector<LR_item, allocator<LR_item> >::_M_assign_dispatch<LR_item *>(LR_item *, LR_item *, __false_type)

cygwinで
% g++ -pg ソース
% ./a
% gprof a.exe
としてます。
mona
 - libhoge.so
 - 2ch.so(hoge.soの関数を利用する為に-lhogeしました)

monaから
2ch.soの関数呼ぶとエラーになるんすけど、これはリンクのさせ方が悪いのでしょうか?
-lしないとそんな関数ねーよって言うし。
コンパイラとどんなエラーが出るのかを書かないと分からんよ.
コンパイラはエラー吐かないんす。
↑実はpostgresでshared objectを動的にロードする形の話なんだけど、
postgresをmonaと見立てても同じことかな、思って。

ちなみにlddするとこんな感じ・・・
$ldd 2ch.so

libcrypt.so.1 => /lib/libcrypt.so.1 (0x40031000)
libxmlpgsql.so => /usr/local/lib/libmona.so (0x4007d000)
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

このスレで聞いたのは間違いかも^^;
だからどんなエラーがでるのか書けって。

>このスレで聞いたのは間違いかも^^;
何様?
450448:02/09/03 12:01
>449
いや、posgreスレの方かなと。
451448:02/09/03 12:06
バッグエンドからは

NOTICE: Message from PostgreSQL backend:
The Postmaster has informed me that some other backend
died abnormally and possibly corrupted shared memory.

なのが帰ってきますが^^;、激しくすれ違いでした。
せっかくマターリとスレ進行してたのに台無しだな…夏休みは終わったってのに….

--------------------------------------------
↓ ↓ ↓ ここから先はマターリとおながいします ↓ ↓ ↓
  ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (゚Θ゚ )  <仕切り屋ウザイ Yo...!?
 (  U)  \________
 (__(_)))        

荒れてる方が面白いだろうーがボケぇー
454デフォルトの名無しさん:02/09/04 08:04

#include <vector>

↑の1行だけのソースでも、g++ -g ってやるとテンプレートがらみの部分
に対応したデバッグ情報がけっこうでてきます。
ソースファイルが数百あって、だいたいどんなファイルでも
vector くらいインクルードされてると、
最終バイナリーの80%くらいがこのデバッグ情報の重複分になってしまいます。
なにかまちがってるような気がするのですが、こういうもんですか?
そういうものです。
変に省略されて、デバッガに嘘つかれるよりましです。
終わったらstripすればいいんだし。
456454:02/09/04 10:45
>>455
vectorに関するコードが1ビットたりとも生成されてないのに、
嘘つくもなにもないと思うです。

> 終わったらstrip
デバッグ情報いるファイルのリストつくって、そいつらだけ -g とかしとこうと思いました。
457勉強になりますた:02/09/04 19:43
>>454
重複するデバッグ情報って自動で削除されるんじゃなかったっけ…と思ったけど、
手元の資料見たらやっぱ手動でStripせにゃイカンらしい。

ちなみにその資料によると、stripしたバイナリは、他のstripされとらんバイナリの
デバッグ情報を利用できるそうだから、必要なモノだけ -g より、
不要なモノだけ strip の方が良いかも?
458454:02/09/04 20:45
おいらの知識も結構怪しいので、も少し勉強しないとついていけませんな。
他のバイナリの情報を引っ張ってこれるなんて知らんかった。
459454:02/09/05 08:11
>>457
> 不要なモノだけ strip の方が良いかも?
そっちも検討します。
情報ありがとうです。
ところでその資料ってやつがWebにあるもんなら、リンクいただけますかね?

>>458
騙りだー。
gcc で、標準入力からファイルを読み込んでコンパイルって可能でしょうか。
program | gcc -c -x c -o hoge.o
みたいに。
461457:02/09/05 20:38
>>459
スマソ。情報ソースは「Linkers&Loaders」(John R.Levine著/オーム社)っつー「本」です。
一応巻末の参考文献から、参考になりそうなURLを1つ。
DWARF (ELF用デバッグ情報) 等についての解説がありまつ。
 http://developer.intel.com/vtune/tis.htm
>>460
#include "/dev/stdin"
↑の1行だけを書いた temp.c を作って
$ cat program.c | gcc -o hoge temp.c
463デフォルトの名無しさん:02/09/05 22:38
ところでgccのjavaって、Javaの規格どこまで満たしてるの?
質問おかしいかな
Java1.2、Java1.3、とかあるじゃん
>>462
おお、こんな手があるとは!
ありがとうございました。
>> 463
gcjはコンパイルするまで、実行環境はlibgcj。
文法仕様は1.4のassertも可能なのでコンパイルしてclassファイルを
作ることはできるけど、実行で使うlibgcjにあるクラスはJDKに無いものも多い。
http://gcc.gnu.org/java/
466458:02/09/05 23:01
>>461
あれっすか、途中までしか読んでないなー。
もう一回最初から読み直そうかな。

>>460,462
gcc -x c -でないの?
468460:02/09/06 00:21
>>467
あ、- が使えたのか!
こっちのほうがすっきりしてていいですね。
ありがとうございます。
ぐっしっし
470西安 ◆CYANh33g :02/09/06 02:43
MinGW-2.0.0 リリース!!
471デフォルトの名無しさん:02/09/06 06:39
>>470
gcc-3.2 based ですなー
2.95 の1.xから乗り換えるべきか...悩む..
gcc-3.1ブランチは捨てらしいね。
3.2がこれから主に使われていくとか。
3.1が3.2になって、3.2が3.3なったちゅー話やろ
先日 mingw を使い始めたのですが、
ShiftJIS 対応 gcc & windres はどこかに無いのでしょうか?

あと、フリーのリソースエディタってどこかにあるでしょうか?
lcc についてるのやら、BCCForm というのやらは見つけたのですが、
ちょっと使いづらくて…
>>475
自己レスです。
http://homepage2.nifty.com/tenk/lib/doc/cpp_sj.htm
に Shift-JIS 問題を解決する cpp0.exe のラッパーを見つけました。
試してみたところ、かなり便利です。
素朴な疑問
gcc及びGNUの提供するソフトによって
同人ソフトをつくり、ミケでの公開は可?
>>477
可能だが制約がある。どういう制約か? まずはこれ読む事から始められよ。
http://www.gnu.org/licenses/gpl-faq.ja.html

スレ違いsage
479デフォルトの名無しさん:02/09/06 13:18
>478
gccで作ったバイナリだけは例外でGPLは及ばないんでは?
L/GPLライブラリを使えばL/GPLになるが。
480デフォルトの名無しさん:02/09/06 13:49
LGPLでダイナミックリンクならLGPLの制限は免れる。
そうでなかったら、mozillaとかどーすんの?
481デフォルトの名無しさん:02/09/06 13:56
一般にGPLのソフトの出力は、その出力にそのGPLのソフト自身の
ソースを含まない限り、GPLは及ばないと書いてあるように思ったから
gccだけが例外というわけではないんじゃないかな、多分。
482デフォルトの名無しさん:02/09/06 15:33
これで合ってますでしょうか?

gcc及びGNUの提供するソフトを使用してクローズドなソフトを
開発してもよい。ただし、その出力にGPLソフトのソース(及び
オブジェクト)コードを含まないこと。

GPLソフトウェアは静的・動的ともにクローズドなソフトにリンクできない。
LGPLソフトウェアは動的リンクなら可能。

printf等が含まれるライブラリglibcはLGPLソフトウェア。
glibcを使用する場合は静的リンクならソフトウェアを
GPLソフトウェアとして公開すること。
さもなければ動的リンクにしなければならない。

でもさらにスタートアップコードやシステムコールの
ライセンスも絡んできますよね。
specs の書式を説明してるサイトってないっすか?
>>483
Google使えばたくさん出てきます、自分で調べてください。
>>483
gcc の info (Node: Spec Files) 読めば詳細に解説してあるが。
>>485
つーか一見して分からんか。
>>300です。
他のブランチ使うほどgccに入れ込んでるひとはやっぱり少ないみたいですね。
まあやってる人は2chなんか見てないだろうなあ
>>488
ですね。currentのソースコード読むだけでもかなり大変なので。。。
490デフォルトの名無しさん:02/09/11 05:31
gcc で directx 8.1 アプリケーション書いている方は
いらっしゃいますか?
directx 8.0 はあるんですが directx 8.1 library(.a) が
見つからないんですが…。まだ誰も porting してないのかな?
>>490
lib(.a)なら簡単に作れるじゃん
492490:02/09/11 17:13
>>491
よろしければ方法を教えていただけませんか?
Microsoft の directx8.1 ライブラリ (.lib) から
gcc のライブラリ形式 (.a) に変換する方法なのですが…。
reimp で変換してみたのですがうまく動かなくて…。
問題は D3DX8 なんだよね
>>492
変換しないで、自分で作れよ
495490:02/09/11 18:25
自分で作れるものなのですか? >> 494
>>495
目的のDLLと呼び出し規約、名前、序数を一致させた
何もしないダミーのdllを作っれば、互換のライブラリが作れる
>>492
最近の binutils 使うと、そのままリンクできると思うが。
498490:02/09/12 04:24
>>496
呼び出し規則以外のものはどうしたらよいでしょうか?
クラス定数群とか C++ オブジェクトとか。

>>497
gcc3.2ですがリンクできないみたいなのですが…
すみません、Microsoft のライブラリ形式がそのままリンクできるのは
どちらの binutils か教えていただけませんか?

g++ -mwindows -Wall -O3 -s -o test.exe test.cpp d3dx8d
.lib d3d8.lib d3dxof.lib ddraw.lib dxguid.lib
そのままリンクとは、こんなことができるということですよね…?
>>498
-mms-bitfield は?

他には、C で書いたのを C++ でラップするとか。
>>498
C++オブジェクトって?
エキスポートされているのは普通のstdcallのAPIだと思うが。
>>500
d3dx8.lib じゃないの?
これは、インポートライブラリじゃないし。
502499:02/09/12 06:14
>>498
-mms-bitfields デスタ
503490:02/09/12 06:15
どうも早くからレスに感謝いたします。

>>499
gcc3.2@mingw では invalid option `ms-bitfield' です。
MinGW ではまだサポート外みたいです…。
cygwin などではそのままリンクできるのですか?
もしそうならかなりの優れもの…。すぐにでも乗り換えたいです。

>>500
http://www.bloodshed.net/dev/packages/index.html
こちらの DirectX8 library を参考にしているのですが
Microsoft配布の.libの中をみてみるとMS-C++の C++ メソッドっぽい
シンボルが大量にあるんですよね。これはたぶん lib 側に C++ メソッドも
含まれているわけで。これもなんとか変換したい…というのは
無理っぽいでしょうか。
他にも COM interface やら CLSID,IID 定義等が山盛りで…。
私ごときではかなり手に負えないです。
DLL 側から追いかけて最小限の API 互換にすべきなのかな…。

見た感じ 8.0 から変更になっている COM は D3DMesh インタフェースと
DirectPlay 関係のいくつかが削られているだけのようなので
8.1 に部分的には対応したのですが…うーん。
504490:02/09/12 06:24
>>502
ありがとうございます。
-mms-bitfields になおしてみたのですが…
lib は読めないみたいです。残念…。
505499:02/09/12 06:34
>>504
試さずに書きつづけるのも気が引けるけど、
DirectX って、C からでも使えるんじゃなかったっけ?
C++ だと ABI の問題があるんで、一度 C から試してはどうでしょう。
で、リンクできたら、それを使って C++ 向けのラッパクラスを書くと。
>>498
% objdump -H
(中略)
objdump: supported targets: pe-i386 pei-i386 elf32-i386 elf32-little elf32-big srec symbolsrec tekhex binary ihex
objdump: supported architectures: i386 x86_64 i8086 x86_64:intel i386:intel
Report bugs to [email protected].

binutils は cygwin でインストールしたヤツです。
507490:02/09/12 22:18
>>505
ありがとうございます。試行錯誤していて遅くなりました。

COMインタフェースの部分は手順に従って…何とかリンクできるようになりました。
でも、C から使える部分でも Microsoft のスタティックライブラリに
コードが入っているものがあるので、これがリンクできないので
制限されてしまいます。ライブラリのコードが DLL になっているか
ソースが公開されてれば、エクスポートできるんですが…。戦略なのかも。

いまのところ DX8.1 SDK D3D サンプルの簡単なもの Lighting と Text3D は
コンパイルできるんですが…。スタティックリンクできないので複雑なものは
なんだかダメっぽいです…。
508490:02/09/12 22:19
>>506
あ、どうもありがとうございます。
試してみます。
509デフォルトの名無しさん:02/09/13 00:21
俺の彼女もGPLで外を歩いてます
ヤったら次の人へ紹介しなきゃいけないんですか?
いえ他の人に求められた場合に,
そうできる状況にあれば大丈夫です.
自分の彼女はBSDライセンスです。
>>512
自分の彼女はシェアード・ソースです。つまり見るだけです。
514あげ:02/09/13 16:46
MinGWのShift JISの対応のさせ方教えてください。
>>511
あ,そうなんですか。ありがとうございます。
早速>>509の彼女探しに行ってきます
>>514
>>476 みろ
(´-`).。oO (509の彼女をオープンソースで開発したい・・・)
(´-`).。oO (病気をコミットするやついそうでやだなあ・・・)
別のブランチを孕ませる危険があるぞ。
520デフォルトの名無しさん:02/09/16 03:10
下のソースをコンパイルすると
> tes.cpp:6: warning: `typename myit<Cont>::value_type' is implicitly a typename
> tes.cpp:6: warning: implicit typename is deprecated, please see the
> documentation for details
て文句つけてくるんですがなにがいけないの?implicit typename ってなに?
cygwin + gcc 3.2 20020818 (prerelease) です。

#include <iterator>

template<class Cont>
struct myit : public std::iterator<std::input_iterator_tag, const typename Cont::value_type>
{
value_type v;
myit() {};
};

template<class T>
struct mycont {
typedef T value_type;
mycont() {}
};

myit<mycont<int> > c;
>>520
myit クラスのメンバ変数 v の型が特定できんのでは?
522520:02/09/16 03:18
//ソースはこっちのほうが適切だったかも

template<class T>
struct vt {
typedef T value_type;
};

template<class Cont>
struct myit : public vt<typename Cont::value_type>
{
value_type v;
};
523520:02/09/16 03:20
>>521
見落としました。ごめんなさい。で、さらにごめんなさい、どういうことですか?
>>523
myit<mycont<int> >::value_type が定義されてない。
525520:02/09/16 03:34
>>524
でも下はOKなんですよ。

struct int_type {
typedef int value_type;
};

struct myit : public int_type {
value_type v;
};
526520:02/09/16 03:43
template<class T>
struct any_type {
typedef T value_type;
};

//これはOKで
struct myit : public any_type<int> {
value_type v;
};

//こっちはだめ
template<class T>
struct myit2 : public any_type<T> {
value_type v;
};
リターンアドレスらしきところを書き換えて
マザーボードのビープ音鳴らすコード書いて、そこに飛ばしても
実行されない。もしかして、どこまで行ってもリターンアドレスがないのか?
とにかく、まだバッファーオーバーフローが成功できない。
528527:02/09/16 04:01
お騒がせしました、落ち着きました。
部屋の空気を入れ替えたら難なくできました。
makefileでシェルスクリプトのまねごとをしたら駄目ですか?
板違いですがすいません
>>529
駄目じゃないです
>>529
> 板違いですがすいません
ってわかってるんなら、適切な板で聞きなよ。
まあ、make 使うのはプログラマが一番多いから、板違いとまでは言えない
と思う。
とりあえず、 make makes many problems
http://pc3.2ch.net/test/read.cgi/tech/1029599472/l50 あたりで
聞いてみれば ?
>>526
any_type<T>::value_type が型かどうかわからないから。
ひょっとしたら、後で
template<> class any_type<int> {
int value_type;
};
とか特殊化をされるかもしれないし。
>>526
T が未確定の時点では識別子 value_type の存在を認識できないので、value_type が型名であることを明示するために
typename value_type v;
とか書かないといけないんじゃないすか?
> typename value_type v;
こういう書き方はない。
typename T::value_type v;
のように限定子が必要。ただ今回の場合は、
typename any_type<T>::value_type v;
だけどね。
535520:02/09/16 10:57
そうか特殊化があったか!サンクス。
//これでOK
template<class T>
struct myit2 : public any_type<T> {
typename any_type<T>::value_type v;
};
536520:02/09/16 10:59
>>534
スマソ
537520:02/09/16 11:45
ちょっとスレ違いぎみだけど、じぶんでイテレータ作るときは
たとえば
value_type &operator*();
じゃなく
T &operator*();
と宣言するのが正しいのかな?
538:02/09/20 02:36
―?\ソЫ?\?\\?\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭?\?\xx?\\\?\
 
gcc 3.2 (MinGW 2.0.0-3) で、
-arch=i686 としたバイナリは、AMD のどの CPU から動くんでしょうか?
540デフォルトの名無しさん:02/09/23 05:23
>>539
DURON,ATHLONから間違いなく動く。手元で確認。
K6-2,3もたぶん大丈夫だったはず。手元に無いので味覚人。
541539:02/09/23 07:55
>>540
情報サンクスコです。
ところで、もうすぐ K6-2 を触れそうなんですが、
どんなソースを使って確認したほうが良いんでしょうか?
今動いたとしても、変更後には当分確認できそうに無いので。
# -march=i686 ダッタ
つか、i686でも486以降なら動くんでない?
例外を捕まえてコードエミュレートするでしょ
>>540
CMOV インストラクションとかも実装されてたっけ?

>>541
そりゃ

1. gcc のソースを読んで、使っているインストラクションを確認。
2. AMD からプロセッサの仕様書を入手して、実装されている命令を確認。

だろう。PentiumPro で新規追加された命令に関しては Intel が Web で配ってる
Intel Architecture Software Developer's Manual Vol.1 に書いてあるから、それ
を参考に。
544539:02/09/23 14:37
>>542-543
やっぱり、仕様書を突き合わせて確認するしかないですかね……
薄々そう思って落としていたので、読みに逝ってきます。
アリガトン。
545デフォルトの名無しさん:02/09/24 12:49
546539:02/09/24 21:17
>>545
K6-III でも i586 にして試してみて、と言われてるようなので、
とりあえずは i586 で逝っときます。
ありがとうございました。
547デフォルトの名無しさん:02/09/29 23:51
アセンブラはCより速いって(最適化しやすい)聞きますが
gccはcc1がアセンブラを出力してasでコンパイルしますよね、
ということはgccにかぎってはインラインアセンブラを使っても
最適化には意味がないんでしょうか?
>>547
??よく意味がわからんが・・・・・・
インラインアセンブルしたらそのままの形で出力されるだろ。
当然最適化したかったら手で行わないと。
>>547
Cやasmのソースコードがどうバイナリに変換されて実行されるかを勉強しませう。
>547
最適化しやすい、というより、自由度が高い(プロテクトやセグメント、フラット
どうこうが絡んでいたらそれほど実感はできんが)
Cでは使えない機能を使う事が出来る。(CPU固有の命令やレジスタとかとか)

自由度が高いから、最適化しようと思えばCよりも最適化できる。
しかし、下手な最適化はむしろ逆効果。最近のはかなりややこしい。

最近のCPUはどれに合わせて最適化すれば良いのかさえ不明。
速度を稼ぐ意味もそれほど有るとも思えない。
自分が欲しい機能は既に誰かがライブラリ化しているかもしれない。

というわけであんまり触る必要はないだろう。それなりには楽しめるが。
勿論、CやC++やdel辺りがどのように実現されているかを学びたいのな
らその必要はあるかもしれん。
MinGW のメーリングリストがすごい事になってたよ……
552デフォルトの名無しさん:02/10/01 20:59
>>551
なにがどうすごいのか50文字ジャストでまとめろ
本当にすごかったね……
Earnie Boyd wrote:
>
> Introduction
> ============
> You receive this message because you are subscribed to the MinGW

A time bomb waiting in the crontab for the first day of the month. It
should be fixed now.

Earnie.
http://www.cise.ufl.edu/depot/www/ImageMagick/www/api.html
にあるサンプルプログラムをコンパイルしたところ、
./example.c: 4: magick/api.h ???????????????????
というメッセージが出てコンパイルできません。

たぶんパスが設定されていないことが原因だとおもうんですが、
どうしたらいいのか教えてください。

api.hのフルパスは
/usr/X11R6/include/magick/api.h
です。
>>555
> ./example.c: 4: magick/api.h ???????????????????
> というメッセージが出てコンパイルできません。
その前に
bash: Magick-config: command not found
のようなメッセージはないですか?
557555:02/10/03 21:52
>>556
出ていません。メッセージは一行だけです。
>>557
入力コマンドは、
$ gcc `Magick-config --cflags --cppflags --ldflags --libs` example.c
で合ってますよね。
$ Magick-config --cflags
の結果はどうなります?
559555:02/10/03 22:27
すいません
gcc example.c
でコンパイルしていました。

gcc `Magick-config --cflags --cppflags --ldflags --libs` example.c
を実行すると、エラーが山のように出てきます。

Magick-config --cflags
の結果は、
-g -02 -m486 -fno-strength-reduce
となります。

>>559
> gcc `Magick-config --cflags --cppflags --ldflags --libs` example.c
> を実行すると、エラーが山のように出てきます。
そのエラーを解析して、ソースを書き直していくしかないですね。

> Magick-config --cflags
すまんです。
$ Magick-config --cppflags
の方でした。そっちだと、ヘッダのインクルードパスを指定してくれます。
# エラーとは関係ないと思いますが ;-)
561555:02/10/03 23:26
すいません、
ライブラリもサンプルプログラムも間違っているはずは
ないと思うんですが……
>>561
どうやらネタにマジレスしていたらしい。
欝山車能
563555:02/10/04 00:00
ぜんぜんネタじゃないんですが。
ネタだと思われたなら、申し訳ありません。
564デフォルトの名無しさん:02/10/04 03:22
エラーメッセージが????になって、原因が分からない、ということ?
それならLANG=C gccとすれば英語でエラーが出るから、その結果を見るべし。
565562:02/10/04 18:23
>>563
> ぜんぜんネタじゃないんですが。
sage質問だったし、エラーメッセージもないし、
とImageMagicおよびGCCのバージョンも分からんし、
つーことでネタ判定してしまったが、そーじゃないのね。
これ以降すれ違いスマソ。エラーメッセージが
example.c:27: structure has no member named `message'
なら、ImageMagicのバージョンに問題有り。
とりあえず、ソース内の `message' を `reason' に
`qualifier' を `description' に変更してみてね。
詳細は、/usr/X11R6/include/X11/magick/image.h
を見てくれ。エラーメッセージが違えば、晒せ。
566555:02/10/05 20:55
>>565
ありがとうございました。バージョンが少し小さかったようです。
Vine2.5についてたのをそのまま使ってたんですが、このさいアップデートしようと
思います。

で、もう一つだけ質問なんですが、この手の画像作成ライブラリで一般的な
のは他にありますか?
GD
568デフォルトの名無しさん:02/10/12 21:18
gccのソースを読もうと思ったのですが、どこにソースが
あるんでしょうか?ディレクトリのトップは主にライブラリ用の
ディレクトリしかないのでコンパイラ自身はgccだろうという
ことでgcc/下を見てみると、以下のようになっていました。
$ cd gcc
$ find . -type d -maxdepth 1 | xargs du -sH
135MB .
30MB ./ada
41kB ./ch
22MB ./config
5.1MB ./cp
3.3MB ./doc
5.6MB ./f
1.5MB ./fixinc
66kB ./ginclude
345kB ./intl
3.5MB ./java
713kB ./objc
5.5MB ./po
37MB ./testsuite
201kB ./treelang
これのどのどこにあるのでしょうか?
testsuiteはテスト用プログラムだから関係なし。
adaは自身のコンパイラをadaで書かれているんでしょうか?
adb,adsというサフィックスのソースがずらり。
poはコンパイラの多言語版メッセージがずらり。
configはターゲットのマシン,OSに応じた処理をする部分と思われます。

ってことはCはどこで処理されてるの?
gccって謎です。
569デフォルトの名無しさん:02/10/12 21:22
>>568
gccよりあなたの方が謎です。節穴系ですか?

gcc/*.[hc]です。
大まかに言って、
c-*.[ch]がC固有のもの。
他は他言語と共通のもの。
ありがとうございます。
おおぼけ、でした。
c-がCのものだとするとcpp*はプリプロセッサかな。
共通のものと各言語のものが綺麗に分かれてると
思ったのですが、そうでもないんですね…

これを読むのは一苦労ですがメンテしてる人は
さらに凄いというか、なんというか
gcc/gcc/*.{[chy],def}からちょっとづつ読んで逝きたいです。

どうもでした
漫然と読むのは辛いと思うから、目的を決めた方が良いよ。
>>570
>>571が言うように、ただ漠然と読むのは辛い。
何かプログラミングしているときに、「この標準関数はどう実装しているんだろう」って感じで
少しずつ把握しているソースを増やしていくのが良いと思われ。
>>572
それって、ライブラリのソース見た方が...。
>>573
glibcでなくてgccね…勘違いしてますた。逝ってきます…(´・ω・`)ショボーン
575436:02/10/14 03:16
>>444
 既に一ヶ月以上経過していて今更ではありますが・・・。
 やっとですが、解決しました。 本当に有難う御座いました。

 "-lwinmm" って、何のスイッチだろう・・・とかって調べていて、
-l を度忘れしておりました。
 確かに、付けないとリンク出来る訳ないですよね。
576デフォルトの名無しさん:02/10/15 19:12
MinGWが新しくなってる。ガイシュツだったらスマソ。
http://members10.tsukaeru.net/bitwalk/download_mingw.html#mingw
>>539
K6(/2/3)では大抵動かないですです。
P55C互換cpuなので、P6命令(CMOVとか)で止まるのだと推測してます。
歙渺折
VB saiko-!
580デフォルトの名無しさん:02/10/28 02:44
石を投げればCハカーに当たってしまうUNIX業界にあって、g++の、特に3系列の
あの複雑怪奇なstandard C++への準拠度が素晴らしく素晴らしいのはどういった
理由からなんでしょう?
>>580
そりゃ、ユーザー数も開発者数も圧倒的に多いからだろ。
それぐらいしかアドバンテージがないから
C++を使って何千億と稼ぎ出す企業の使うコンパイラは
なぜあんなにもいい加減なのでしょう?
その程度で充分なことを知っているから
>>583
標準に準拠するよりも、最適化に掛けるコストを大きくした方がよく売れる
からじゃない?
>>581
開発者数なんて少ないです。
それにユーザー数なんてVC++の方が
何倍もいます。
>>586
まあそうだろうね。gccは一種の桃源郷のようなものかも。
588580:02/10/28 02:58
>>586
同じく、あまり多くなさそうだというのが僕の印象。
ユーザ数も、gccなら組み込み関係でもベースにされてたりするけど、
g++はそうでもなさそうだし。

>>583
標準に準拠する能力が無いから
最適化だのは準拠率が改善しない弱点を
ユーザを洗脳して逸らしているだけ
>>583
必ずしもC++の仕様に準拠することがベストではないから。
市場を独占してしまえばソースの可搬性なんて意味のないものだし。
>>586
ユーザー数はさすがにgccでしょう。
カーネル再コンパイルするだけで使うわけだから。
あ、でもg++だとどうなのかな。
VC++が糞な理由を語るスレはここでつか?
>>592
糞というよりなんとかしてもらいたいというところでは?
VC++がなきゃ飯食えない人も多いんだし、好きだ嫌いだなんて
いってる場合ではないでしょ。
何のための標準よ?
標準テンプレートライブラリもコンパイルできない糞VCのことを
言ってるならベストどうのよりもまずコンパイルが通るようにしろよ
gccマンセー派のいつもの手ですな
誇れるのは最適化しかないの?VC厨
MSの開発環境は"美しい設計が生産性と再利用性をほげほげ"なんていう話とは対極の
ところにあるからなぁ。MFCとか。
それを信奉する者なら、例えばSTLのアルゴリズムがコンパイラのせいでまともにつか
えなくとも関係ないだろうね。

#俺? 断固VC粉砕熱望。
gccで-Sオプションをつけてコンパイルしたら、アセンブリ出力されます
が、このリスト中に元のプログラムの行をコメントとして付け加えること
はできますでしょうか?
>>598
出来ないと思う
VCだとできるのに・・・糞ですね
601580:02/10/28 03:14
つまらない発言をしている馬鹿はどうぞこちら
を見ろ莫迦ども。
http://ton.2ch.net/test/read.cgi/gline/1028811653/
>>599
ありがとう
603デフォルトの名無しさん:02/10/28 03:19
燃料age
つまらんsage
最適化されてどんな形になるかわからない
元のソースを付け加えるのに何の意味があるのか
>>605
最適化されたアセンブリ出力を見て、元のソースと見比べて
秘かに自己満足のほほえみを浮かべたい。
607デフォルトの名無しさん:02/10/28 03:36
>>600
やりかたおしえて
ヘルプにコマンドラインオプションがあるからそれみてね
それからスレ違いだよ
>>598
.stabnの3番目にソースの行番号が入ってるんで、突き合わせて想像汁。
>>598
それ、>>182のやりかたで代用できないの?
611デフォルトの名無しさん:02/10/28 12:43
>>583
だって、仕様が変ったら、
大勢いる質の低いプログラマがついてこられないじゃない。
g++でも「g++-2.95だと〜なのに〜g++-3だと〜」とあちこちで質問が出ている。
// まあ、仕様が変らない部分で遅れているところも多いけど。

>>585
最適化は優れていませんし、それを売りにもしてないです。

新しいのを出すにあたって、注意しているのは、
・プログラマたちを怒らせないこと、(仕様変更!)
・アップグレードしたくなるような機能を入れること
じゃあないですかね?

VC++をめぐる不満が炸裂してMSのプログラマがストライキ起こさないかな。
そうでもしない限り、ANSI対応する方向に向かうとは思えないんだけど・・・

それとももしかしてサードパーティーとの差別化戦略で社内じゃ別の
素敵なコンパイラを使ってるとか??何にしてももう少しなんとかなって
もらわないと困るべよ。
この板見ても「実装→仕様」と思っているプログラマが多いみたいだから、
ANSI対応することによって、未定義部分の動作が変ったら、大騒ぎだべさ。
「コンパイルできなくなった〜! バグだ〜!」って騒ぎだすべさ。
ほんとは未定義の部分は使ってはいけないんだけどねえ。
言語仕様をくまなく見てプログラムってるヤシは少ないだろうし。
未定義についてWarningだせってんだよ
ゲーツェーツェーって言ってる人たちがいる。
>>616
最強っぽい
おフランス風に「ジェセセ」と読んでます
ジョージチャーリーチャーリー!
620デフォルトの名無しさん:02/10/29 14:12
げーつぇーつぇー採用age。
C#対応age
622デフォルトの名無しさん:02/10/29 14:29
maji?
マジかよ・・・
ついにGNUもプライドを捨てたのか・・・
624623:02/10/29 14:30
(*´Д`)結婚?
ついにワタスにも春がcome meなのね。
痛くしないでね・・
プライドがあるからこそC#対応。
GNUが極端なアンチMSになってはいけない。
source kibon nu >>621,626
onajiku hageshiku kibon nu

ただgcjを使っているという話をあまり聞かないし
どうなんでしょう?
さっき本家とGCCのMLアーカイブ見てみたがそれらしい話は載ってないけど<c#対応
C++の対応がイイって聞くけど、わざわざ 2.95.x から乗り換える程のモン?
>>630
libstdc++があたらしくなっていて、ヘッダファイル名の .h がきちんととれたり
したのがイイね。あとは XXX_iterator も完備された。std:: を書かないとコンパイル
エラーになるようになった。typename キーワードを書くべきところでを書かないと
警告されるようになった。このあたりか?

最後のは慣れない人には(俺とか)わかりにくいのでウレスイかどうかは微妙。


>>631
素早いレス、さんくす。しょっぱい STL にウンザリしてたところだから、
インストールしてみるよ。
633631:02/10/29 17:09
>>631
ホンワカと前提になってしまって通じているが、3.2の話ね。
current(3.3?)もかなり安定してるみたいだから、そっちを
使ってみてもいいかもしれない。
635デフォルトの名無しさん:02/10/29 17:17
>>634
3.2との、目に付きやすい差異があればキボンヌ

>>631
ウム。
standard compliant && clean なコードを書きたい人向けのlintとしてはかなり使えると思う。
>>635
http://gcc.gnu.org/gcc-3.2/changes.html
http://gcc.gnu.org/gcc-3.3/changes.html
これらを見るとDFASchedulerが入ったことかなあ。
といってもそれ、よく分らないんだけどね(汗
cygwinで
gcc version 3.2 20020818 (prerelease)
なんだけど下のコードを
g++ -c -O2
すると、g++が落ちて「レポートしる!」って出るんだけど、どうだろう。

#include <vector>
using namespace std;
typedef int TT;//任意
void make_LR_item() {
 struct inner {
  static int go_to() {
   struct innerinner {
    static int byvec() {
     vector<vector<TT>*> succ;
     vector<TT>::iterator i, e;
     for (int i=0; i<succ.size(); ++i) {
      if (succ[i] == 0) continue;
     }
     return 0;
    }
   };
   return innerinner::byvec();
  }
 };
 inner::go_to();
 return ;
}
>>638
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
では通りますYO.

ちなみに書き込むときにインデントいれるのどうやってるの?
上のって全角スペースじゃないよねえ?
640639:02/10/29 18:09
あ、ごめん、-O2 か。落ちます。
641デフォルトの名無しさん:02/10/29 18:10
>>638
レポートしる!
642デフォルトの名無しさん:02/10/29 18:32
>>638
どうだろう?って何が知りたいの?
>>642
「がいしゅつ」って言葉を使うのがいやだったので…
644デフォルトの名無しさん:02/10/29 18:37
ハァ&*>?
>>644
トコロントチャリピカァ!
>>643
「既出」という言葉を知らんのかバーカ
まさか”がいしゅつ”を知らん人がいるのか・・・?
いや、知ってても全くもってエラくもなんともないんだが。
馬鹿のすくつ。
649デフォルトの名無しさん:02/10/29 19:04
「巣窟」という言葉を知らんのかバーカ
巣窟(そうくつ)
関数呼び出し時に引数がなぜかintになるんですけど
どうしたらいいですか?
652デフォルトの名無しさん:02/10/29 20:33
もっと詳しく書け。できればコード貼れ。
って、C言語か?
大方 func(int i){〜} を func(0.1); の様にしてんだろ。
外部リンクにある関数なのに宣言をしてない/ヘッダをインクルードしてないとか
-Wall でコンパイルし直せ
655646:02/10/31 20:24
俺は「がいしゅつ」を使いたくなかったら既出を使えっていってんだよ。
ということで馬鹿は日本語を知らない643。

スレ違いスマソ。
自分の記述不足で意味が通じなかったのを
相手のせいにするのはプログラマーとしてまちがっとる!
エラーをコンパイラやOS、他人のせいにするタイプだろ>>646

スレチガイニテサゲ。
657デフォルトの名無しさん:02/11/01 14:45
658デフォルトの名無しさん:02/11/01 19:07
g++2.95から3.2にして大量のwarningに苦しんでるたちなんですが、
以下のコードが3.2では通りません。

std::vector<var*> container;
std::vector<var*>::pointer func(void) { return container.begin(); }

vectorのpointerとiteratorは同じように扱えると思ってたのが間違いなんでしょうか。
>>658
iteratorはデフォルトのアロケータを持っているから、ポインタに変換すると
エラーが出るのでは?
>>658
うん間違い。先頭要素をさすポインタがほしければ、
&container[0] をかえす。
>>660
そしたら std::vector<int*>::pointerとint**の間には違いがないと見て
いいのでしょうか?
662658:02/11/01 20:54
別物ですか。どうもです。

両方ともstl_vector.hの中で
 typedef value_type* pointer;
 typedef value_type* iterator;
と定義されていたので同じように使えると思ってました。
にもかかわらず

stl::vector<var*>::pointer i;
stl::vector<const var*>::const_pointer j;
j=i; // これはOK

stl::vector<var*>::iterator i;
stl::vector<const var*>::const_iterator j;
j=i; // これはNG

というのが気になったもので。
# 2.95ではどちらも通るんですよね。
>>662
どこのファイル見てる?
/usr/include/c++/3.2/bits/
の下のファイル見てる?
664658:02/11/01 22:04
>>663
違うところ(usr/include/g++/)見てました。3.2だとパスが違うんですね・・・。
確かに/usr/include/c++/3.2/bits/stl_vector.hではiteratorは
アロケータ込みで定義されてます。ありがとうございました。お恥ずかしい限り。
>>661
厳密に言えば std::vector<T>::pointer は T* でなくても
スマートポインタのようなものでも OK。
つまり、operator* と operator-> が定義されていて T* と同じように
振る舞えばよいということだね。
666 ◆hMJAPH9PWA :02/11/02 09:44
std::vector<>::pointerって標準?初めて見るけど…。
『Generic Programming -- STLによる汎用プログラミング』という
本にはそう書いてあったんだが、規格書を見たらそういう記述は
見あたらなかった。標準ではないかもしれんね。
668デフォルトの名無しさん:02/11/04 07:01
すいません。最近redhat7.3でgccをインストールしたのですが
gtkを使おうと思って#include <gtk/gtk.h> と書いたのですが、gtk/gtk.h
はない、というメッセージが出てエラーになります。
で、#include </gtk/gtk.h>とすると一応gtkディレクトリにあるgtk.hを
読みにいくのですが、gtk.h内のinclude文も #include <gtk/~~.h> と書かれて
いるため全てのincludeがエラーになります。(でも#include <stdio.h>は通り
ます。相対パスを指定するとエラーになります)
gccをバージョンアップしたりしましたが同じ結果でした。
どうなっているのでしょうか?設定がよく分からないので助けてください。
-I フルパス
$ gtk-config --cflags
671668:02/11/04 09:10
>>669>>670
ありがとうございます。指定してみたらできました。
しかし始めからgtkやglibのインストールがおかしかったみたいで
、煮詰まって来て疲れました。もう一度再インストールしてみます。
VB は糞!
http://public.kitware.com/GCC_XML/HTML/Index.html
ブーストスッドレより。どうなんこれ?
>>673
よく読んでないんだけど
Doxygenみたいなもんでしょ?
違うの?
ぜんぜんちがうよん
だったら説明しる
>>676
説明も何も、概要ちゃんと書いてるべさ。あ、もしかして……
>>676
> The purpose of the GCC-XML extension is to generate an XML description
> of a C++ program from GCC's internal representation

C++ のソースコードを parse して、gcc の内部表現に対応する XML コードを
生成すると書いてあるが。
ソースコードのXML表現だったら興味あるかも。
見た目は普通のソースだけど裏ではXMLになってるとか。
680デフォルトの名無しさん:02/11/12 10:52
ソースコードにリンク貼ってくれるやつか
>>679
RTL木だと思う。
何に使うのか謎だが。


682デフォルトの名無しさん:02/11/12 13:42
gccでコンパイルした実行モジュールから、シンボル(ラベル)とアドレスの対応表を、
コードを実行せずに抽出する方法orツールはありますか? アドレスは適当な
ベースからのオフセットで可。
objdump? nm?
684デフォルトの名無しさん:02/11/12 13:54
>>619
古レスすまんが、
「ゴルフ・チャーリー・チャーリー」ではないのか?
685611:02/11/12 14:18
686682:02/11/12 15:00
>>683
nmでオプションを煮詰めればいけそうです。クロスでやってるんで、
nmがあるか心配でしたが、binutilsが一通りあったのでとりあえずOK。
thx!
gccでリンク時or後に、使われなかったデータ/関数を抽出することできますか?
ひとつの.oが多くの機能をもつライブラリをstaticにリンクした時に、使わな
いものまで入ってしまうので、これをみつけたいのです。
本当は削除したいのですが、それは手動でなんとか....
688デフォルトの名無しさん:02/11/13 08:20
なぜvtableが、デフォルトで書き込み可能セクションに出ますか?
>>687
最適化 (-O4以上) で消えないか?
690689:02/11/13 10:25
staticな関数でないと駄目だな。ごめんよ。
>>687
関数単位に分割してライブラリにするってのが常套手段、っつーかそのための
ライブラリだが、それはしたくないわけ?
>>691
うん、それが正しい。が、今あるものを分割するのが、大変なので、自動化で
きる方法ご存じないかしら、とおもって。
defineとコンフィギュレータ(構成変更のツールなの)が曲者。が、ここは、分
割を自動化する方法を考えてみますかね。ありがとう。
man csplit
694-W,l名無し:02/11/14 00:09
>>692
ar xして*.aも*.oにして、
nmしてT,U,D,Cをpickupして、
U→T,C→Dという連鎖で依存関係のgraphを作成して、(nodeは.o)
自前の*.oから到達可能なnodeだけpick upすればよい。

GTL(Graph Template Library)その他グラフ系ツールを使えば
あっと言う間じゃないかな。
695デフォルトの名無しさん:02/11/15 13:37
>>688
vtableを変更するか、意図しない結果か、何かしたいか、のどれかでしょう。
696   :02/11/17 01:54
組み込みのCPUを、PCからシリアルを通じてgdbでデバックしたい場合は、
gdbと通信するモニタープログラムがターゲット上に必要になるかと思いますが、
どうやって対応させるのでしょうか。なにか参考になるHPとかあったら教えて欲しいです。
>>696
・eCosを動かす。
・infoにstubの仕様が書いてあるので、がんばって作る。
>>696
ターゲットは何?
物によっては、メーカーのモニタを使えるぞ。
700696:02/11/18 09:49
>>697,698
resありがとうございます。
本日からちょっとやってみます。eCosは自分の力では無理っぽいです。
>>699
業務関係上具体的にはお話できません。パチンコ向けのわけのわからんCPUですが。
オリジナルのモニタープログラムにデバック機能も組み込みたかったので。
>>697
おおーそれナイス。
702デフォルトの名無しさん:02/11/19 19:58
gcc3.2でC++プログラム書いてるんだけど、
キャッチされない例外があると、即segmentation fault出てcore dumpするの
何とかなら無いすかね?
try {
 ...
} catch (*) { // ワイルドカード(藁
}
とか出来れば、それでもいいけど。
デバッグ超大変なんですけど…
>>702
catch (...)
入門書に書いてあるはずだが…
>>702
おまえ、それはバグを潜在化させるだけじゃないかと、
706702:02/11/19 22:55
本当だ、書いてあった。
お前らありがとうございました…

しかしsegmentation faultは勘弁して欲しい。
javaみたいにどこからどんな例外が投げられて、
そしてキャッチされませんでした、とか言ってくれるのが
ベストだろうけど。
unexceptedを設定知る
>>700
1. モニタにgdb-stub の機能をいれる
2. gdbのほうで、モニタのコマンドにあわせる
の二つの方法がありまする。
1はinfoみればあったはず。2はgdbのソースの remote-xxx.c をみるよろし。
モニタを自分で触れるターゲットなら1のほうがおすすめ。
709デフォルトの名無しさん:02/11/20 13:24
グッシッシ3.2.1リリースあげ
710デフォルトの名無しさん:02/11/20 15:36
711デフォルトの名無しさん:02/11/22 02:04
>>706
segmentation faultが来るなら、例外をキャッチし損ねているんじゃ
なくて、単にメモリ壊したりNULL pointer dereferenceしたりしているだけ。
terminate()ならSIGSEGVじゃなくSIGABRTが来ないとおかしい。
712デフォルトの名無しさん:02/11/22 21:18
質問です。このスレでいいのかわからないですが、どこに書いたらいいのかわからないので・・・。

makeを実行したとき、コンパイルが正常に終了したなら、できたファイルを実行して、
エラーがあったときは実行しないようにしたいのですが、
そういう時はmakefileになんて書けばいいんでしょうか?
教えてください。
コンパイル結果の実行ファイルに依存するダミーのターゲットの処理として実行すればいいじゃん。
714712:02/11/22 22:16
ただ./a.outを書いただけでできました。
しかもcoreを吐いた時は勝手に削除してくれます。
715デフォルトの名無しさん:02/11/23 03:07
gcc で、VisualCでMFCやDirectXを使って作成したプログラムをそのままコンパイルしたりできないでしょうか。
(最適化機能付のプロフェッショナル版が高くて買えないので)
C++での内部シンボル名の規則が違ったり、いろいろ不具合あって出来ないとかでしたっけ?
>>715
昔DirectXのサンプルをBolandC++でもコンパイル出来るようにしたことがあったが・・・。
#pragmaあたりでwarningでまくったりしてかなり苦労したけどな。
Borandでもそのままじゃームリだったので、gccじゃなおさらじゃない?
VC++とBCBとgccはベースは同じC++ですが全くの別物です。
特にGUIアプリに互換性は無いに等しいです。
これはC++の宿命です。C++がクソなのです。
718デフォルトの名無しさん:02/11/23 06:48
windowsで最新のGCC使いたいんですが、
cygwin入れるしか無いでしょうか?
720718:02/11/23 07:23
>>719
ありがとうございます。
そのリンク先のは
http://prdownloads.sourceforge.net/mingw/MinGW-2.0.0-3.exe
と何か違うのでしょうか?
>>720
いくつかのユーティリティが付加されている。そのため、サイズがかなり大きい。
多分どちらでもいいと思うけど、Bitwalkのリビルド版を使っている人は多い
と思う。
722718:02/11/23 07:39
>>721
ありがとうございます。
インストールしました。

で、度々すいません、
windowsアプリ(WinMainを使う)をコンパイルしたいんですが、
試しに七行スレのラスタスクロールをコンパイルすると、

gcc -O2 raster.cpp -lgdi32
c:\windows\TEMP/ccaHn6fb.o(.eh_frame+0x11):raster.cpp: undefined reference to `__
gxx_personality_v0

というリンカのエラーが出るんですが、
gccの引数に何を足せば良いんでしょうか?
(最初BitBltでもエラーになったが-lgdi32を追加したので出なくなった)
>>722
フルパスでいれたらどうなりますか?
-l"c:\windows\gdi32" とか。
他には -mwindows を付けるとか。
725718:02/11/23 07:49
>>723
いや、gdi32の方は-lgdi32で解決済みだと思います。
多分>>722のエラーはスタートアップだと思うんですが

参考までに-lgdi32を省いたときのエラー出力です。
>gcc -O2 rast0.cpp
c:\windows\TEMP/ccaHn6fb.o(.text+0x198):raster.cpp: undefined reference to `BitBl
t@36'
c:\windows\TEMP/ccaHn6fb.o(.eh_frame+0x11):raster.cpp: undefined reference to `__
gxx_personality_v0'
726718:02/11/23 07:53
多分'__ gxx_personality_v0'の在処を
なんとかすればいいのはわかるんですが、何なんでしょうねこれ。

↓gccに掛けてるraster.cppのソースです。

#include <windows.h>
#include <math.h>
int a=GetSystemMetrics(0),b=GetSystemMetrics(1),n,f,o=SRCCOPY,s;MSG m;HINSTANCE
i;main(){ HWND g;HDC d; i=GetModuleHandle(0);
WNDCLASS w={67,DefWindowProc,0,0,i,0,0,0,0,"R"};
RegisterClass(&w);g=CreateWindow("R",0,9<<28,0,0,a,b,0,0,i,0);d=GetDC(
g);while(IsWindow(g)){if(PeekMessage(&m,0,0,0,1))DispatchMessage(&m);else{for(n
=0;n<b;n++)BitBlt(d, s=sin((f+n+1)/40.0)*60,n,a,1,d,s,n,o);f++;}}return 0;}


>>726
これで通りましたよ。
g++.exe "C:\MinGW\Learn\raster.cpp" -o "C:\MinGW\Learn\raster.exe" -Wall -mwindows -O3 -s -I"C:\MinGW\include" -I"C:\MinGW\include\c++" -I"C:\MinGW\include" -L"C:\MinGW\lib"
728718:02/11/23 07:58
>>724
-mwindowsを付けても変わりませんでした。
729718:02/11/23 08:04
えっと、C言語に直してコンパイルすると通りました。
c++のライブラリの問題の様です。困った・・

>gcc -O2 rast0.c -lgdi32
a

↓直したソース
#include <windows.h>
#include <math.h>
int a,b,n,f,o=SRCCOPY,s;MSG m;HINSTANCE i;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpszCmdLine,int nCmdShow) {

/*int main(){*/
HWND g;HDC d;
WNDCLASS w={67,0,0,0,i,0,0,0,0,"R"};
a=GetSystemMetrics(0);
b=GetSystemMetrics(1);
i=GetModuleHandle(0);
w.lpfnWndProc = DefWindowProc;
RegisterClass(&w);g=CreateWindow("R",0,9<<28,0,0,a,b,0,0,i,0);d=GetDC(
g);while(IsWindow(g)){if(PeekMessage(&m,0,0,0,1))DispatchMessage(&m);else{for(n
=0;n<b;n++)BitBlt(d, s=sin((f+n+1)/40.0)*60,n,a,1,d,s,n,o);f++;}}return 0;}
730718:02/11/23 08:08
>>727
あ、見落としていました。
g++ですか。
>>729
c++でもそのまま通りますが・・・・・
732718:02/11/23 08:10
皆様、ありがとうございました。
無事実行ファイルが出来あがりました。
733デフォルトの名無しさん:02/11/23 15:48
gccのインラインアセンブラで、
__asm__のオペランド記述の後ろに"=r"とか,"r"(tmp)
みたいなのが付いてる時がありますが、これは何なんでしょうか?
r以外にもSとかありました。
↓みたいなやつです。

__asm__ volatile ("call %0\n"
:"=r" (tmp) );
__asm__ volatile ("movl %%eax,%0\n"
:
:"r" (tmp) );
734733:02/11/23 16:51
あ、いいです。忘れてください。
735デフォルトの名無しさん:02/11/23 23:15
>717
そうか? MFC みたいなライブラリや、Unicode, SJIS, それと #pragma が絡む
と話は別だが Win32 API だけ使う分には gcc でも問題ないぞ。特に gcc だと
bcc と違って MS の提供するスタティックリンクライブラリもリンクできるし。

>730
gcc はファイルの拡張子によってコンパイル、リンク時の動作が変わるんだが、
標準だと *.cpp は C++ だと認識してくれない。gcc で C++ のソースコードを
書くときには、

1. ソースの拡張子を *.cc など、gcc が C++ ソースと認識するものに変更。
2. gcc ではなく g++ を使う。
3. gcc にコマンドラインオプション -x c++ を指定する

のどれかで対処して下さい。個人的には 2 を使うことが多いです。
736デフォルトの名無しさん:02/11/25 09:15
cygwinのgccの環境は駄目だ。*nixからの移植モノならいいのかもな。
mingwマンセー、と言っておく。
ところで、インラインアセンブラをAT&Tやめてインテル形式で記述できる
パッチ無い?NASMとか使いたいんだけど。
しつもーん
gccの拡張記述で、「戻らない関数」をコンパイラに教えて
コードを最適化する、関数修飾子ってなかったっけ。
今日別のプログラマと話してて、どうしても思い出せなかったっす。
知ってる人教えて〜
__attribute__ ((__noreturn__))
739737:02/11/25 11:18
>>738
お、そんなのもあるのか。さんきゅう
でも、volatile と同様に、
  hogehoge void quit()
みたいに関数の「前」につけるのなかったっけ・・・?
stdlib.h を見る限り↓ではないけど・・?
extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
741737:02/11/25 11:25
無いのか・・・X68000のGCCで見た記憶あったんだけど、
夢だったのかも。ありがと〜>>740
なるほど、exit(3)の宣言を見ればよかったのか。
参考になりまつ。
742デフォルトの名無しさん:02/11/25 13:17
g++(3.2) + gdb で、例外が投げられたらbreakするにはどうしたらいいでしょう
>>742
void f(){throw 0;}
これをコンパイルして、外部参照してるアンダースコアつきの
シンボルにブレークポイントを仕掛ける。
・・・ってな感じでいけるんじゃないかと思った。
>>742
もっとマシなIDEを使う。
745デフォルトの名無しさん:02/11/25 13:48
>>743
_f に?
_throw ?

>>739
つーかそれが volatile だよ。
volatile void foobar(); で帰ってこない関数 foobar() になる。
gcc2.5 から attribute noreturn が出来たのでそっちを使うようになった。
(volatileも使えるけど)
747743:02/11/25 13:54
>>745
コンパイラの内部関数に。
漏れはgcc3.1だけど、__cxa_throwとかが怪しいな。
748737:02/11/25 14:01
>>746
そーだった!
考えてみればあたりまえですた。
揮発な関数ってなんやねんと昔悩んだのに・・・
ありがとござますた
749デフォルトの名無しさん:02/11/25 18:29
俺的速度評価
←速い
VC6(-O2)>>>mingw(gcc3.2 -O2)>>>bcc5.5(-O2)
いつもこの3つで通るプログラム書いてますが、
だいたいこんな感じです。
「このコードはこんだけ差が出る」っての出せる人いませんか?
750デフォルトの名無しさん:02/11/25 23:19
>>749
そもそもの話cc1はともかくg++はclに比べて糞重いだろうが、
gccはアセンブラを吐いてas.ldでコンパイルするっていう手順くんでるので
理屈からいっても無駄がでてくる。
コンパイル速度の話には見えない・・・
>750
コンパイル時間の話なのか、生成されるコードの話なのか…
753749:02/11/25 23:52
すいません。生成コードの速度です。
コンパイル速度で言ったらgcc最下位でしょ。
754デフォルトの名無しさん:02/11/25 23:58
>>736
同意。それがあれば最高なのに、、、
755デフォルトの名無しさん:02/12/01 14:11
バイナリサイズがでかい?
自分で脳内最適化してください。
757デフォルトの名無しさん:02/12/01 16:05
http://sources.redhat.com/binutils/
GNU びぬてぃるすの蜜柑…
>757
?
759デフォルトの名無しさん:02/12/04 18:00
cygwin-b20 fullをインスコしたのですが、(無論、windowsです)
gccでpthread.hを使おうとしたところ、そんなファイルは無いと言われます。

unixのようなマルチスレッドのプログラムは作れないのでしょうか・・・(;´Д`)

また、パスをきちんと通しているのですが、
gccでコンパイルしようとすると、
stdio.hが見つからない・・・といった類のエラーが出ます。
仕方がないので、gcc.exeが置いてあるディレクトリにファイルを置いて
コンパイルしている現状です・・・

何が悪いのか全然分からないので、
どうか助けてください。よろしくお願いいたします。
>>759
> cygwin-b20 fullをインスコしたのですが、(無論、windowsです)
どっからそんな化石を発掘して来た。
>>759
gccのパスが通ってないだけだと思うけど、
cygwinの質問ならunix板の方がいいよ。
ちなみにb20ってすごく古いよ。
762759:02/12/04 18:41
えΣ( ゚Д゚)!! マジですか??

cygwin gccでググッて、
http://www.palmos-japan.com/dev/tools/gcc/
のページから落としたのですが・・・
最新版の所在は分かりますか・・・?(;´Д`)
764埋造:02/12/05 07:30
>>758
>>757 ちゃんは、strip を示唆したんでは。

と言いつつ、埋め。
765デフォルトの名無しさん:02/12/05 11:08
予定通りだとgcc-3.3がそろそろ出るかな。みなさんバグを発見したら
ちゃんとレポートしましょう。
766デフォルトの名無しさん:02/12/05 13:37
バグ?
2.95.3ですまそ。これ通らないといけないと思ったが通らん。
Borland-C++5.6では通る。

class record {
std::string key;
std::string value;
public:
friend bool operator< (const record &l, const record &r);
record(const std::string &k, const std::string &v)
: key(k), value(v) {}
};

bool operator< (const record &l, const record &r)
{ return l.key < r.key; }
s.cc: In function `int main()':
s.cc:6: `class string record::key' is private
s.cc:28: within this context
s.cc:7: `class string record::value' is private
s.cc:28: within this context
>>766
main()がないのでこんなのをくっつけて2.96で試したら問題ないようだけど。

int main()
{
    record r1("hoge", "asdfsd"), r2("hage", "dasfdase");
    cout << (r1 < r2);
    return 0;
}
2.95.4なら通るよ
typeof演算子みたいにtypedef templateをフライング実装してくれないかな
public class teste {
  public static void main (String [] args) {
    System.out.println ("Hellow world");
  }
}

こんなプログラム書いてgcjでコンパイルしたら、

/usr/lib/crt1.o: In function `_start':
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
collect2: ld はステータス 1 で終了しました

とか言われます。
何がいけないんだ?
771770:02/12/07 14:11
すんません、解決しました。

gcj --main=teste teste.java

ってオプション付ければいいだけだった。
>>770
javaはスレ違い
GNU Compiler Collectionの一部だからそうでもない。
774デフォルトの名無しさん:02/12/09 19:38
#include <iostream>
int main ()
{
  std::cout << "あはんはん" << endl;
  return 0;
}

文字コードEUCの、このファイルをコンパイルすると、

ahan.cc: function 内の `int main()':
ahan.cc:5: プログラムとして逸脱した文字 '\33'
ahan.cc:5: 構文解析エラー が `(' トークンの前にあります
ahan.cc:5:39: 警告: 複数行文字列リテラルは推奨されません
ahan.cc:5:39: " 文字での終端を欠いています
ahan.cc:5:39: 終端のない文字列リテラルの推定開始位置

とか言われます。
日本語ってどうすりゃいいの?
775デフォルトの名無しさん:02/12/09 19:50
774
微妙にワラタ
776774:02/12/09 19:53
いきなりだけど解決した。
EUCじゃなくてJISになっていやがった。
ついでに std::endl にしないとダメだし。
微妙に鬱
微妙、微妙逝ってんじゃねえよ
てめeらこそ微妙
>>777 突っ込んで欲しいのか?
>>777
ゾロ番getおめ
>>777
微妙におめでとー。
GCCの更新履歴とかの詳しい日本語サイトってないんですかね?
>>777
微妙に微妙なヴァカですね。
保守
インラインアセンブラで質問

typedef float MATRIX[4][4];
inline void foo(MATRIX& mat) {
 asm volatile("ここで mat に書き込む" :: "r"(&mat));
 // ここで mat 読み出す
}

こういうコードを書くと、gcc がインラインアセンブラで mat を書き換えたことに気づ
かず、レジスタに残ってる mat[4][4] の要素を再利用することがある。明示的に
mat 書き換えたよ、と宣言したいんだけどどうしたらいい?

いちおう解決方法は見つけたんだが、どっちもイマイチなんで。

1. clobbered registeres に "memory" と書く
 これだと mat に限らず、すべてのレジスタをいったん破棄してしまうから、効率が
 イマイチ…。
2. inline にしない
 これも効率の面から避けたい
785デフォルトの名無しさん:02/12/18 21:38
>>784
マクロにする
volatile MATRIX &vmat = mat;
として、
 asm volatile("ここで mat に書き込む" :: "r"(&mat));
以降では vmat を使うとどうなる?
>>786
matにvolatileつける…最適化効かないから悲しい事になるか。
やっぱりmemoryをclobberするのが正攻法では?
inline void foo(volatile MATRIX& mat)じゃだめ?
>>784
メモリ領域に出力なんだから "m" constrain を使って
asm volatile("ここで mat に書き出す" : : "=m" (mat));
でどうよ。%0 がアドレスになるからアセンブリはちと変わるかも。
gcjはJavaからネィティブコードを吐き出させることが
できるみたいですが、Windows版はあるのでしょうか?
また、swingなどのGUIコンポーネントには対応しているのでしょうか?
GUIはAWTもほとんど対応してなかったはず
792790:02/12/20 13:41
>>791
thx.
あーヤパリGUIはダメですか・・・。まだまだ実用段階ではないってことね。

Win版というか、Cygwinのgcc 3.2パッケージに含まれてるgcjが
なんとなーく動く。少なくともhello worldは動いた(w
# もちろんAWTやSwingなんてのは無い
794784:02/12/20 21:57
いろいろ参考になる意見をどうも。

volatile はどれもダメだった。元々の変数を非 volatile で宣言してあると、後で
volatile 参照変数に入れても「元の方は影響受けない」ってことみたい。(それ
だと今回はキツいんで)

>>789
これで対応しました。ただ

0x00(%0) -> %0
0x10(%0) -> 0x10 + %0

とか書くと %0 が %lo(xxxxx)(%fp) みたいに展開された時にアセンブラが文句を
言うので

"=m"(mat[0]), "=m"(mat[1]), "=m"(mat[2]), "=m"(mat[3])

と並べて対応しました。

あと 128bit データ型なら "=&j" で書き出すのもアリみたい。
>>793
単独実行ファイルになるのはいいけど、
速度面では Sun JVM と変わらないか遅いくらいじゃない?
796795:02/12/21 00:43
適当なことをいっている気がしたので、きちんと確かめてみた。
ベンチマークはこれで。
http://www.asahi-net.or.jp/~AN4J-UEHR/homepage.en/jp/.NETplaf/bench.htm

Win2KSP3/AthlonXP1700+。gcc は cygwin 版。
┌──────┬──────┬───┬───┬───┐
│    実行環境│コンパイラ  │最適化│rev40 │fib20 │
├──────┼──────┼───┼───┼───┤
│j2se1.4.1_01│j2se1.4.1_01│  -   │   214│  1146│
├──────┼──────┼───┼───┼───┤
│j2se1.4.1_01│gcc-3.2-3   │  -   │   217│  1151│
├──────┼──────┼───┼───┼───┤
│w32 native  │gcc-3.2-3   │  -   │   300│  2010│
├──────┼──────┼───┼───┼───┤
│w32 native  │gcc-3.2-3   │ -O   │   199│  1423│
├──────┼──────┼───┼───┼───┤
│w32 native  │gcc-3.2-3   │ -O2  │   139│  1091│
└──────┴──────┴───┴───┴───┘
gcj は gas に落としているので最適化が効くみたい。
JIT や Hotspot が有効なプログラムでは JVM の方が速いかも。
797795:02/12/21 00:48
そっか、プロポーショナルフォントだから崩れるのか。鬱。
ちなみに生成されるファイルのサイズは以下の通りでちた。

j2se1.4.1_01 class files 105303bytes
gcc-3.2-3 class files 91806bytes
gcc-3.2-3 native exe(-O2) 2204515bytes
       upx -9 して 1244515 bytes
gcc-3.2-3 の実行ファイルのサイズは strip 済みですか?
799795:02/12/21 01:42
そういやしてなかった。
gcc-3.2-3 native exe(-O2) striped 1436672bytes
       upx -9 して 476672bytes
お、1MB 割った。

GUI は AWT/Swing 待つよりも SWT 使うのが良いと思った。
コソルリ>>800ゲトしてみる。
801デフォルトの名無しさん:03/01/05 08:21
age
-lなんたらって、それを使ってるオブジェクトファイルより後に付けないといけないのね
803デフォルトの名無しさん:03/01/05 18:15
gccってコンパイルの時にzlib使うみたいですが
何に使われているのでしょうか?
>>803 java の *.jar(*.zip) なファイルを読む時かな。
gcc-3.01-msvcrt.exeファイルが見つからん
806805:03/01/07 03:04
オレが探していたのはMinGWだった。
お前らの助けを借りずに済んだぜ。ヘヘ

>>806
バーカバーカバーカバーカーバ!!
お前はHTAでもやってろ! プッ
http://www.microsoft.com/japan/msdn/columns/dude/dude070599.asp
>>806
どうしたんだよw
808805:03/01/07 04:22

MinGWを、gcc Developer Station 2000で、使おうと、した。

上手く、ビルド、出来なかっ た。

DS2kを、使うのを、やめた。


やっぱ、グッシッシ使うならDev-C++だねぁー
>>231に感謝。
>>807
うるせーバカッ!!
809デフォルトの名無しさん:03/01/07 07:51
>>808
Dev-C++に含まれるg++のバージョンは3.2だから、最新版の3.2.1を使うには
http://www63.tok2.com/home/bitwalk/download.html#mingw
からダウンロードして、上書きしなせえ。
8101001:03/01/07 21:12
>>809
ハァ?
氏ねや
811デフォルトの名無しさん:03/01/07 21:19
>>810
おまえこそ氏ねよ
812デフォルトの名無しさん:03/01/07 21:26
ここはひどいインターネットですね。
だが、愛がある
ぬるぽもある
815仕様書無しさん:03/01/08 01:48
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`∀´)/
 (_フ彡        /  ←>>814
gccを解説した書籍とかサイトとかありません?もちろん、日本語で。
>>816
impressから出てる 「できる!GCC」 シリーズがおすすめ

今日からはじめてすぐにコンパイル!
Hello,worldから詳しく解説。
WE LOVE GCC!
>>817
聞き方が悪かった。
C言語の解説書じゃなくて、GCCでプログラムするための解説書だ。

オライリー辺りで出てないかなと思った次第だが。
820名無しさん@xyzzy:03/01/08 08:25
>>819
man gcc
もしくは、これじゃだめなのか?
http://www.sra.co.jp/wingnut/gcc/
あとはソースひたすらソース。
ところで@xyzzyってのは初めて見たかも。
動くのか、、、
822IP記録実験:03/01/08 21:33
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
>>820
文書が古いね
j
IPってなんですか?
昔は祭りなんてなかったなぁ。
もう対応してるんじゃないの?
IP記録大賛成ですね。
>>544
漏れも「今から危険な領域に突入しようと(以下略」みたいなとこまでは
いったんだが…。気になるけど見たくない…。
>>53 そう、そこが問題なんだよ。 裁判所は、
現状の2ちゃんねるにあっては、名誉毀損かどうかをひろゆきが判断をしなさい。
削除しない場合は、法廷で、「レスの真実性・相当性」をひろゆきが立証しなさい。

と言っているわけ。
>>53 そう、そこが問題なんだよ。 裁判所は、
現状の2ちゃんねるにあっては、名誉毀損かどうかをひろゆきが判断をしなさい。
削除しない場合は、法廷で、「レスの真実性・相当性」をひろゆきが立証しなさい。

と言っているわけ。
あっちこっちでスレ違いのIP記録話が始まってウザい事この上ない。
>>57
一言で言うと、チミも構ってクンw
834832:03/01/10 10:12
と思ったらスクリプトが腐ってるのか…
これじゃ俺の書き込みの方がウザく思われるな。逝ってきまつ。
えっ!単に
ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者
ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者
ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者
ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者ヤブ医者

連呼でも?
常に自分とこの病院が話題にされていると勝手に考えるのは
単に自意識過剰ではないの?
はぁぁぁ。あと、1週間以内で生理・・・。

何事にもむかついてたまらないっ!
生理前って、ブルーになったり、いらいらしたり。。。
ほんと勘弁してって感じ。
祈念カキコ
このまま2chが衰退していくのが目に見えるな
携帯は「あけおめ」を規制するそうだが、
2ちゃんも、31日23時〜1日正午ごろまで、
全板のcgi止めといたほうがいいんじゃないか……?
「かまわん」というのなら巨大なお世話でスマソ

で結局IP記録に賛成なの?
質の低いって言ってもせいぜい荒らしとかのことだろう。
>>714
それはトマトとかいうものらしい?
設定?してあるwebのアドレスを書き込むとリモホとIPが晒される
随分前からやってるらしい
いままで記録してなかったことのほうが不思議だ
ああ、それは当時のIDの算出方法が、IPアドレスを推測可能なものだったから(^_^;)
つか、それで公開仕様のIDを募集したのだな(^_^;)
おしゃべりは録音でもしない限り流れて消えますが
掲示板の書き込みは文字として残りますよ
犯罪者はそれなりの手段で匿名性の確保ができる。
これで困るのはごく一部の愚者と小心で正直な市民だ。
つまり現実世界と同じ。面白いか、そんなの。
まあ嵐が減るならいいや
匿名性のメリットはそういう点でなく、
「双方向目安箱」だと思うよ。

小泉が一般人の振りして2chで議論
これも匿名だから可能だろ?

実際に小泉がやったか知らないが…
個人情報は削除の対象となります。
じゃなかったかすら
意見を聞いてもらうために「次スレたってないようなのでこちらに」は
 
 やめろ。
851デフォルトの名無しさん:03/01/11 16:58
で、gccについての話題は終了?
2chで内部告発的な事をするリスクが大きくなるのかな?
発信元がわかるんで、告発された側が「よーし金でねじ伏せちゃうぞー」
とか言って裁判でも起こしまくって。
そんな状況はガクブルだから、面白そうな(真実である事が前提の)投稿は、減る?のかな?
考え過ぎ?って言うか見当違い?どうだ?どうなんだ?
IP記録しても構いませんので、スレッドをもっと立てやすくしてください。

IPが記録されるような掲示板は匿名掲示板とはいえませんが、

スレッドが立てられないような掲示板はもはや掲示板ですらありません。
そういうことだったんですか(^_^;)
でもね・・・
そ ん な こ と は 一 秒 あ れ ば 思 い 付 く こ と
だと思いませんか?(^_^;)
つまり、今の手法ってのが選ばれたってことから
そのやり方は選択されなかったことは自明かと・・・・。
キターーー

January 10, 2003
Geoffrey Keating of Apple Computer, Inc., with support from Red Hat, Inc., has contributed a precompiled header
implementation that can dramatically speed up compilation of some projects.
pchブランチの成果が入ったってことかな?
イパーイ釣れてヨカタね。
まんこ ちんこ うんこ しっこ ぴゅーぴゅー♪ 

        | |[‖★‖]       (  ★ )
        | |<丶`∀´>       <丶・∀・>
        | | )::::::::(          )::::::::(
        \::::::::::::;\        /::::::::::::;\
          |:::::::::::: l |       //´|:::::::::::: l |
          |:::::::::::: | |       | | |:::::::::::: | |
         /::::::::::::/| |      // /::::::::::::/| |
         |::::::::::/ U      U ..|::::::::::/ | |
         |::::||:::|  | |∧_∧| |  |::::||:::|  U
         |::::||::|   |( ;´Д`)/  |::::||::|
          | / | |   / |    | /.| |
         // | |   |    /   // | |
        //  | |   | /| |   //   | |
       //   | |   // | |   //   | |
       U    U  U  U   U     U
ShutOutというけど
ローカルルールに従った要請は受け付けてるんだから(^_^;)そうすればいいよ
列に並ばないで権利を主張する奴は許されない
フーン
864山崎渉:03/01/13 18:39
(^^)
既出です
866山崎渉:03/01/15 17:59
(^^)
867デフォルトの名無しさん:03/01/16 17:47
December 27, 2002
Mark Mitchell of CodeSourcery has contributed a new,
hand-crafted recursive-descent C++ parser sponsored
by the Los Alamos National Laboratory. The new parser
is more standard conforming and fixes many bugs
(about 100 in our bug database alone) from the old
YACC-derived parser.

これってcp-parser-branchのことだけど、C++マニアの人試してみた?
868デフォルトの名無しさん:03/01/17 11:59

Linux + gccで、

初めて クラスライブラリを構築する事になったのですが、
参考になる 良い書籍やWebページ等ありましたら教えていただけませんか
>>868
主に「何に対して」不安を感じてるんだ? 今まで Visual C++ 使ってて
gcc ははじめてなのか、それとも C++ 自体はじめてなのか。
>>869
人生に対してでふ
人生に憑かれますた
872868:03/01/20 11:11
c++開発自体は経験ありで、でもクラスライブラリ作成は初めて
gccも本格的に使用するのは初めて
873hnhjfcldsa:03/01/20 13:37
■■ 出会いサイト開業システムレンタル ■■

儲かる出会い系ビジネス

月収100万円オーバー!!

HP作成できない初心者でも安心して運営

出会いサイトシステムをサーバーごとレンタルします

運営者様には無料で宣伝ソフトもお付けします

http://giko.2ch.net/129/yamada894jp.html
>>868
おじさんは君の童貞がどうしても欲しい
875山崎渉:03/01/23 20:07
(^^)
876デフォルトの名無しさん:03/01/30 16:25
3.3はもう普通に使える。なかなかいいかも。
というわけでネタなしのから揚げスマソ。
877デフォルトの名無しさん:03/01/30 17:49
878デフォルトの名無しさん:03/01/30 18:47
>>10 私は>>8ではないですが、最近はbehavior levelから直接
論理ゲートまで合成するツールも出来てきているようですよ.

ところでVerilog vs. VHDLでgoogleと結構感情的な意見の言い合い
のページとかが引っかかって英語圏の人に親近感もったりする。
879878:03/01/30 18:58
すまん、完全に間違ったところに書いてしまったよ.
880デフォルトの名無しさん:03/02/04 04:32
cygwinのgcc3.2でC++を使ってます。
クラスのコンストラクタを非インラインで定義すると、
[not-in-charge]と[in-charge]っていうふうに2つ実体が出てきます。
コードサイズがまるまる2倍になって困ってるんですが、
なんでこんなふうに2つ実体がいるのでしょうか?
881880:03/02/04 12:30
http://gcc.gnu.org/bugs.html#known
に載ってた。
でも、なっとくいかんぞーぅ。
882デフォルトの名無しさん:03/02/05 13:56
3.2.2 release age
883デフォルトの名無しさん:03/02/05 16:24
884デフォルトの名無しさん:03/02/07 23:08
シンボル参照されないオブジェクトファイルを実行ファイルに含めないようにする
リンカオプションのようなものはありませんか?
>>884
ないと思う。
886884:03/02/07 23:32
ガーン
やっぱアーカイブに詰めるしかないのか。
887名無しさん@Meadow:03/02/09 00:04
日本語混じり(shift-jis)のソースをgccすると一部の日本語文字で怒られるん
だけど…gccって何かフラグあるのかなぁ?
# eucなら上手く行くのは解ってる
LANG?
>>887
2.95,3.0,3.1の話になるけど、SJISやEUCを素直に食わせるには、
gccを日本語対応でコンパイルする必要がある。
そこらのコンパイル済みバイナリはもれなく対応してない。
890名無しさん@Meadow:03/02/09 01:44
manみて最初LANGかと思ったけど違った。
そーか…cygwinのgcc使ってるんだけど、compileし直すしか無いのか;_;
891デフォルトの名無しさん:03/02/09 01:46
(´・ω・`)http://homepage3.nifty.com/digikei/
なんだ?ここは
892デフォルトの名無しさん:03/02/09 01:46
gccのx86ターゲットでNetBurst対応のはありませんか?
(SSE2オプションとかじゃなく)
Northwood買ったのでi686-gccじゃなんか気持ち悪いんで
893デフォルトの名無しさん:03/02/09 02:08
894892:03/02/09 02:44
>>893
サンクス。
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
でいいみたね
895デフォルトの名無しさん:03/02/09 04:14
man見たところ、-O3 つけると -fomit-frame-pointer も有効になるっぽいけど。

あと、 -march=pentium4 はgcc2.x では無い(?)
gcc2.xはそういう意味じゃさっさと捨ててしまいましょう
>>895
gccのmanとinfoはあんまり信用できないぞ。経験的に。
source見たらぜんぜん違うことがあった。
>>890
ソースの中のSJIS文字列を、\225\266\216\232\227\361 みたいに
変換するフィルタを噛ませばよい。
gccでPascalとか、AdaとかJavaとか他の言語使ってる人います?
900デフォルトの名無しさん:03/02/11 02:15
>>899
他の言語を使っている中の人など900getしない
>>900
何を使ってるの?
>>899
gccってpascalもコンパイルできるの!?
初めて知ったよ!
しかし,pascalって今でも使ってる人っているの?
昔DOSの頃にターボパスカルか何かを大学で使ってたので懐かしい.
しかし,pascalは言語的には結構良く出来てると当時は感じたけど
絶滅させるには惜しい言語だな.
そう言えばTexか何かがpascalが何処かに使われてるとかって話を
聞いたことがあった.
gcc は C# をサポートするの?
>>899
昔書いた Java プログラムを gcj に通して遊んだりしてます。
あーちょっと速くなったーとかいって。
>>902
Delphiは現役で使われまくってるだろ
厳密には独自拡張したものだが、ターパスのころからunitとかいろいろ拡張されてたし。
BASICって今でも使ってる人っているの? と同じ話
>>905
> ターパスのころからunitとかいろいろ拡張されてたし。
俺が使ってたころにはunitはなかった。
ごめん。GNU Pascalとgcc勘違いしてた・・・。
デフォではgccには含まれてないや。
gccのフロントエンドっぽい。

>>906
教科書Pascalみたいな実用的なのは、使いたくないでつ。
×実用的なのは
○実用的でないのは
909デフォルトの名無しさん:03/02/11 12:55
http://gcc.gnu.org/cvs.html
久しぶりに見てみると、なにやらブランチが倍増しています。
gomp-01-branch
new-regalloc-branch
rtlopt-branch
bnw-simple-branch
condexec-branch
cxx-reflection-branch
cygwin-mingw-v2-branch
fixincl-branch
itanium-sched-branch
meissner-ppc-branch
merged-arm-thumb-backend-branch
new-abi-branch
pchgc-branch
pchmerge-branch
subreg-byte-branch
tree-serialize-branch
x86-64-branch
新しいC++パーザとプリコンパイルヘッダに関するものはメインラインに
統合されたとな。
>>909
> cxx-reflection-branch
これ気になるな。
gcjと組み合わせて.NETのManaged C++みたいなことができるとか・・・
>>910
気ままにリフレクションするんだろうな。
日清焼きそばUFOってところか。
913デフォルトの名無しさん:03/02/16 22:49
>>909
メインラインとはどのライン?
latestにはそんなもの入ってないっぽいけど
914デフォルトの名無しさん:03/02/16 22:52
gcc -MM で依存関係出したとき、インクルードしてたヘッダ
消したら(名前変えたりしても)エラーが出るようになっちゃうんだけど、
そういうもんなの?
915デフォルトの名無しさん:03/02/16 22:59
>>884
ファイル単位だったら、アーカイブして、それリンクすれば普通にはじかれると思うが。

関数単位だったら、コンパイルオプションで -ffunction-secionts -fdata-sections 指定して
関数、データ単位にセクション切らせて、リンカオプションで --gc-sections。
コンパイルドライバ(gcc)コマンドラインからの指定なら
-ffunction-sections -Wl,--gc-sections かな?
916915:03/02/16 23:01
>>886
あ、アーカイブすればいいのはわかってたのか。すまん。
>>914
そういうもん
>>913
gcc-3_4-basic-improvements-branch
http://gcc.gnu.org/gcc-3.4/changes.html
昨日、cygwin gcc version 3.2 20020927 (prerelease)でbinutilsコンパイルしたんです。binutils。
そしたらなんかmake installが通らないんです。
で、よく見たらなんかエラーが出てて、
./chew.exe -f ../../../bfd/doc/doc.str <../../../bfd/doc/../aoutx.h >aoutx.tmp
make[2]: *** [s-aoutx] Error 128
とか書いてあるんです。
もうね、アホかと。馬鹿かと。
お前らな、-O2 -fomit-frame-pointer如きで普段見つけにくいwrong code出してんじゃねーよ、ボケが。
-O2 -fomit-frame-pointerだよ、-O2 -fomit-frame-pointer。
(中略)
で、やっとgcc 3.2.2コンパイル終わったかと思ったら、またbinutilsで、
./chew.exe -f ../../../bfd/doc/doc.str <../../../bfd/doc/../aoutx.h >aoutx.tmp
make[2]: *** [s-aoutx] Error 128
とか言ってるんです。
そこでまたぶち切れですよ。
(後略)
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9647
>>917
微妙に使いにくいな。
921914:03/02/17 07:49
>>920
微妙じゃねーよー。
エラーになるんだよ。
みんなどうしてんだろ?
一回エラーが出てから対応すんのかな?
>>919
落ちにヤヤウケ
924914:03/02/18 00:48
>>923
gcc -MM とそのリンク先の関係がまるでつかめない。
リンク先は
「ソースファイルの一覧に変更があったときに自動的にアクションを起こす方法」
みたいだけど、、、
まさか、ヘッダファイルが消えた(名前が変わった)のを検知して、
全オブジェクト作り直しとか?
925デフォルトの名無しさん:03/02/18 08:16
>>918
gcc-3.4を入れてみました。C++のパーサーテストしてますが
なかなかよさげです。ありがとうございました。
>>925
速いのっ?
gcc3.4からいよいよプリコンパイルヘッダーが使えると聞きましたが
本当ですか!?
>>924
> まさか、ヘッダファイルが消えた(名前が変わった)のを検知して、
Makefile(またはincludeされるファイル)を作り直し。
929914:03/02/18 11:10
>>928
ヘッダが消えた(名前が変わった)のを検知して、
gcc -MM ソース全部 するの?
そりゃひどい。

で、最新のgccマニュアル見てたら、-MPなんてオプションがついてる。
コレだコレ。
あ、でも使ってるgccには無いみたい。
アァァ
SRCS := $(wildcard *.c)

%.d: %.c
    $(CC) $(CPPFLAGS) -MMD $<

include $(SRCS:.c=.d)
931デフォルトの名無しさん:03/02/20 13:35
g++ のwarningを全部消すには
optionは何を使えばよいのでしょうか?
please help me.
オプションでなんとかせずにコード直せ。
話はそれからだ。
933931:03/02/20 14:46
>>932
そんなぁ(w
でも解決しました。(-wで
cygwin32 で gcc 使って Palm/LinuxZaurus 用アプリの
開発ってできますかねぇ?
クロス環境作ればできんじゃないの。
リンカとしてgccを使う場合、gccのかわりにg++を使用しても問題はないですか?
937デフォルトの名無しさん:03/02/20 18:07
突然gccの仕事をまかされました
とりあえずエディタで書いてコマンドでmakeして開発してます。

一般的な開発統合環境みたいな感じでbreakかけたりしながら
デバッグする方法はないのでしょうか
>>937
♪gccを知ってても〜 それだけ〜じゃコマリマス〜

gdb
939934:03/02/20 18:37
>>935
Qt ってやつを使ってみたいな、と。
エミュレータもあれば便利だろうな、と。

その辺りの必要なツールやらまとめたページってどこかにありませんかねぇ?
# ダウンロード先が現在も生きているページで。
VCの #pragma warning( disable みたいに、特定の警告をださせないようにソースコード上から
指示を出す方法はありませんか?
info gcc
>>936
libstdc++.soがリンクされてもよけりゃ。
943デフォルトの名無しさん:03/02/20 19:49
int main()
{
const char c[]="圭";
}
とすると
missing terminating " character
possible start of unterminated string literal
parse error at end of input

とでるのですが、G++のバグ?
>>943
"圭\"としる。日本語に対応してないからだね。
945943:03/02/20 20:18
>>944
なるほど!
Thanks.

GCCのUNICODE化がもう少し進んでくれるといいなぁ。
"圭"はShift-JISでは0x8c5c、0x5cは '\' だから誤動作したのだろうね。
UNICODEと何か関係があるのか?
943のエディタが腐ってるだけだろ
何でもGCCのせいにすんな
>>947
(゚д゚)ハァ?
UNICODEでソース書いたらコンパイル通ったの?
全部2バイト文字になるからサイズが大きくなりそうだし。
UTF-16なんか通るのか?
951デフォルトの名無しさん:03/02/20 21:24
>>947
(cygwinのG++3.2)
メモ帳で保存。
UNICODE
UTF-8
でやったけど、通ったのはANSIで保存して圭\としたときだけだった。
UTF-8なら通るはずだ。ゴミBOMでもついてんじゃないか?
953デフォルトの名無しさん:03/02/20 21:44
>>952
(STL PORTは入れてない状態で)
undefined reference to std::basic_string<wchar_t,std::char_traits<wchar_t>,
std::allocator<wchar_t> >::basic_string[in-charge](whchar_t const*,std::allocator<wchar_t? const&)
...
collect2: ldreturned 1 exit status
と出てファイルが生成されない。
全然問題がちゃうやんけ。
955デフォルトの名無しさん:03/02/20 23:25
>>952
BOMの存在さえしらないんだと思われ
それでUNICODE化がどーのとよく言えたもんだ
956デフォルトの名無しさん:03/02/21 00:22
BOMの存在は知らなかったが,
すべてこの見えない存在に悩まされ続けていたのだった.
なぜ、L""が通らなかったのか.
すべての原因がここにあった.(完)

>>952-955
Thanx.
BOMってなあに?
#pragma comment(lib,"libcrypt.a") とかできたら楽なんだけどな。
不要にLDLIBS長くしなくていいし。
そして移植性がなくなって、代わりに-DLIBCRYPT=\"libcrypt.a\"が山のよう
につくようになる罠
>>957
O次郎の唱える呪文
>BOM
Begin Of …なんだっけ。
マンセー?
962961:03/02/22 02:26
ウケ狙おうとして素で間違えた。(赤面
 Byte Order … だったね。
移植性?
965-W,l名無し:03/02/23 05:02
>>934
モバイル板に"Linuxザウルス開発スレッド"つーのがあって、そこに情報あり。
http://pc3.2ch.net/mobile/kako/1030/10300/1030091920.html
http://pc3.2ch.net/test/read.cgi/mobile/1041161974/
966-W,l名無し:03/02/23 05:06
>>958
何これ?
余分なライブラリをいっぱいリンクさせても結局使ってない関数群はa.outには入らないんだよね?
>>967
オブジェクトファイルが別ならな。
>>967
unixについてもう少し勉強しよう。
オブジェクトファイルが一緒なら使ってない関数までリンクされるんだ。
だっせー実装だな(藁
さすが前時代のコンパイラ
コンパイラの都合だけじゃないからややこしい
つーかオブジェクトファイルが一緒でもリンクは関数別なんて事
できるのか?
もしかしてunix依存の話になってる?
>>972
インクリメンタルリンクは、それに近い事やってるんじゃないか?
>>974
たしかに、インクリメンタルリンクができれば、関数ごとのリンクもできそう
な気がするな。
GCCはフリーなのでプリコンパイル済みヘッダーファイルなど大規模開発に必要な機能は
ついておりません。
>>976
gcc3.4ではプリコンパイル済みヘッダ機能が取り込まれる予定。
978デフォルトの名無しさん:03/02/23 23:24
streamやlocaleのライブラリは、なんであんなに
一個のオブジェクトファイルにまとめてあるんだろう。
Cのライブラリみたいに関数ごとくらいで分ければいいとおもうんだけどなー。
gcj が javaのネイティブコンパイルができるというので使ってみたが、hello, world が
2Mbyte超でちょっと鬱。 しかも変なワーニングも出るし。
>>970
コンパイラの仕事ではなくリンカの仕事です。
981915:03/02/24 22:31
>>967
結果的には出来る様になってる。
>>915 参照の事


>>980
コンパイラ&アセンブラが部分的に抽出使用出来ないコードを吐いたら、
リンカだけではどうにもならない。オブジェクトレベルで同一オブジェクト内の別関数、
データの配置参照を解決しちゃうとか。で、gccの動作はまさにそれのはず。
>>970
Turbo Pascal/Delphiは十年前からスマートリンクしてたけどな。
983-W,l名無し:03/02/24 23:34
>>974
インクリメンタルリンクって何?
984デフォルトの名無しさん:03/02/25 13:24
>>979
Mac OS XだとHelloWorldは7MB超ですた。とほほ…
これってlibgcjとかboehm-gcを静的リンクしてるんでしょうか?
一応configureで--enable-sharedを付けたのですが。
自己レスです。
> Also, we don't seem to support shared libraries on
> Darwin - we need to get a newwer version of libtool
> in order for this to work, I think.
http://gcc.gnu.org/ml/java/2002-05/msg00200.html
こりゃ駄目だ… 新しいlibtoolを当たってみます。
>>976
ccache 使え
>>986
無学にしてccacheというものを知らなかったのですが、いま CXX = ccache g++としてみて
その速さにちょっと感動しています。976ではないですが、教えてくれてありがとうございます。

このccacheってなんか副作用とか使っていく上で気をつけたほうがいい点とかありますか?
GCCについて 2

っていうスレ誰か立ててよ
989簡素なテンプレ案:03/02/25 18:35
GNU Compiler Collection について語るスレ
http://www.gnu.org/software/gcc/gcc.html

前スレ
GCCについて
http://pc2.2ch.net/test/read.cgi/tech/1007731543/

関連スレ
祝・GCC 3.0リリース
http://pc.2ch.net/test/read.cgi/unix/992942337/
>>989
それでいいんでおながいします。
スレタイトルはあくまで
「GCCについて 2」
という方向で
GCC
CC 
C C
グシシ
GCC
CC 
C C
GCC
CC 
C
グシシ
GCC
CC 
C
GCC
C
C
グシシ
GCC
C
C
GCC
C

グシシ
GC
C
C
GC
C

グシシ
GC
C
G
C

グシシ
GC
G


グシシ
G



グシシ



とりあえず999
次スレ
GCCについて Part2
ttp://pc2.2ch.net/test/read.cgi/tech/1007731543/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。