トップページ⇒tech
986コメント260KB

GCCについて part5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
史上最強のツール、GCC(GNU Compiler Collection)について語るスレ。

GNU本家のGCCページ
http://gcc.gnu.org/

Binutils - Collection of binary utilities
http://www.gnu.org/directory/GNU/binutils.html

GNU Binutils
http://sources.redhat.com/binutils/

GCC online documentation
http://gcc.gnu.org/onlinedocs/

Installing GCC
http://gcc.gnu.org/install/

GCC Timeline
http://gcc.gnu.org/releases.html#timeline

Calendar
http://gcc.gnu.org/develop.html#timeline
00021NGNG
前スレ
・GCCについて part4
http://pc5.2ch.net/test/read.cgi/tech/1090062751/
・GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/
・GCCについて part2
http://pc2.2ch.net/test/read.cgi/tech/1046179115/
・GCCについて(過去ログ倉庫)
http://pc2.2ch.net/tech/kako/1007/10077/1007731543.html

関連スレ
・cygwin + mingwn + gcc 相談室
http://pc5.2ch.net/test/read.cgi/tech/1058134693/
・gcjって使ってる人います?
http://pc5.2ch.net/test/read.cgi/tech/1046627795/
0003デフォルトの名無しさんNGNG
         (
      ____)__
     ,. ´     `  ` 、
   ./        _   _ \
  /        _   ̄  _ ヽ
  /イィィ,,.,.,.,.,.,      ̄ ̄    !
 f/ノノノノノノノ  ヘ.__ j  jノ__ノ
 |///////   _ (__ ゚_>` __( ゚_イ
 .!|.|i/_^ヽ|_'___r⌒ y'  ヽ^)|
  !|| fニ> ::::::  `ー'゙ (_`___)ノ
   ヽ.ニ` :     /_ノ/川! /  やりおった・・・
    __ノ 、    / ヾ---'´ ノ
 __ノ \l `   ____,/
       \    ノ リ.|`ー--
        \   .//
0004デフォルトの名無しさんNGNG
糞コンパイラ
-O1は特に酷い
手書きアセンブラのほうがマシっす
0005デフォルトの名無しさんNGNG
>>4
Cってのは、速度が気になるコードを書きたいのならコンパイラがどんなコードを出すのかを
理解しながら書かなければならない言語だが?
その限りにおいて、GCCはそれ程ひどいコードを出してこないし、手書きアセンブリよりは
はるかに楽だが。
0006デフォルトの名無しさんNGNG
乙

まだ4.0試してネーヤ
0007デフォルトの名無しさんNGNG
4.0.0の-O2は凄いな。有効オプションの数が多い。
0008デフォルトの名無しさんNGNG
でも、gcc 4.0のはき出すコード、gcc 3.4.3より2割ぐらい遅いな。-O2でも-O3でもおなじ。僕だけ?
0009デフォルトの名無しさんNGNG
>>1
立てなくてもいいのに・・・
0010デフォルトの名無しさんNGNG
現在ベストオブgcc versionは、3.3らしい。
0011デフォルトの名無しさんNGNG
3.3.3最強
0012デフォルトの名無しさんNGNG
このテンプレを忘れてる。アリさん

GCC Bugzilla
http://gcc.gnu.org/bugzilla/
0013デフォルトの名無しさんNGNG
gccの最適化不足をまとめてるページ

Deficiencies of GCC's optimizer
http://www.gnu.org/software/gcc/projects/optimize.html
0014デフォルトの名無しさんNGNG
[gccトリビア]
gcc4.0でブランチしたのは、



3.4に存在したバグが相当あったために4.0としてブランチした。
0015デフォルトの名無しさんNGNG
gccにgpcが統合されるの?
今さらpascalなんてイラネ
0016デフォルトの名無しさんNGNG
ここだけの話、ディストロやOSにもよるが
gcc3.4系は早々とgcc4.0系に切替えていくんじゃないかという噂がある。
0017デフォルトの名無しさんNGNG
試しにgcc4.0でFirefoxビルドしてみたら体感速度上がった。プラグイン全て使えなくなったけどなorz
0018デフォルトの名無しさんNGNG
gcc4.0って3.4からまたABI変わっちゃったの?
0019デフォルトの名無しさんNGNG
あび
0020デフォルトの名無しさんNGNG
あのさ、amd64環境でさgcc4.0にしてコンパイルしたらさ
error: cast from ‘void *’ to ‘int’ loses precision
っていうエラーが出まくるようになった。
このエラーは3.3系で出なかったけど型の制限がより厳しくなったってこと?
0021デフォルトの名無しさんNGNG
>>17
プラグインを入れ直せばいいのでは?
0022デフォルトの名無しさんNGNG
>>20
void * が 64bit で、int が 32bit だからでしょ・・・。
0023デフォルトの名無しさんNGNG
ポインタとintが同サイズと仮定したコードキター!!!
002420NGNG
>>22
実はそのアプリってFirefox1.0です。orz

>>23
あなたのそばにも依存したアプリが....。
0025デフォルトの名無しさんNGNG
一般にAlpha/AXP がまだ現役だったころ開発・メンテされてたコードだとLP64 に結構対応してるのが多いし、
その後IA32野郎が壊したところもすぐ直るものなんだけど、Firefoxのコードは新し目のコード多いのかなぁ・・・
0026デフォルトの名無しさんNGNG
げっ!パフォーマンスチェックしたら、
gcc 4.0がgcc 3.3.3に負けた。orz

っていうか、まだリリースされてないか4.0って(笑
改善の余地有りってことかな。
0027デフォルトの名無しさんNGNG
gcc 3.3.3が最強ってことでFA?
0028デフォルトの名無しさんNGNG
gcc 3.3最強
002920NGNG
Firefoxのソースはgccっていうか、g++なんだけど。
Quick hackしようとおもって途中までやってたんだが次から次へと依存したコードが...。

⊂⌒~⊃。Д。)⊃  依存したコードありすぎて終わらね〜〜よ!!やめたー!
0030デフォルトの名無しさんNGNG
binutils 2.15.94.0.2 出た
0031デフォルトの名無しさんNGNG
>>29
どのへんかちょろっと教えてクリ
0032デフォルトの名無しさんNGNG
gcc4.0は、まだバギーみたいだね。
0033デフォルトの名無しさんNGNG
単純にvoid *をintに代入する、なんて糞コードが
修正されずに残ってるものなのかな。

もしかしたらptrdiff_t相当の、ポインタの差ををintに代入してるのかも
と思ったけど、だったら出るエラーメッセージが違うだろうし。
0034デフォルトの名無しさんNGNG
gfortran4.0でfortran90用に書かれたソースが無条件でとおるようになった。
姫野ベンチを試したら、5%くらい遅いね。(Opteron1.6GHzで498Mflops(gfortran4.0)と526Mflops(g77))
またSECNDS()がなくなった。
0035デフォルトの名無しさんNGNG
でもさ、mozillaプロジェクトのコーディング規約って、
移植性最優先なんじゃなかったかなあ。
firefoxって別なのか?
0036デフォルトの名無しさんNGNG
>>33
AMD64上でgcc4.0を使用して、Firefoxをコンパイルすればわかる。
0037デフォルトの名無しさんNGNG
gcc 4.0来春登場 - 互換性・速度に課題も
http://pcweb.mycom.co.jp/articles/2004/12/22/gcc/
0038デフォルトの名無しさんNGNG
gccは宇宙史上最大のツール
0039デフォルトの名無しさんNGNG
4.0上で>>20のエラーは"Mudflap"て機能が働いてるって事?
0040デフォルトの名無しさんNGNG
> また「完全な内部形式のTree Dumpを取りたい」という意見については、
> 小島氏は「実はこれはRMSの方針で「完全なダンプは出さないようにすること」
> ということになっている」との事実を明らかにした。これは「完全なダンプを
> 出力可能にすると、ProprietaryなBackend Pathを作られてしまう可能性がある」
> という理由からだと言うのだが、一方で開発者にとって完全なダンプが取れる
> ことが非常に魅力的であるという事情もあることから、事前に何らかの文書等を
> 交わしたユーザに限り完全なダンプの出力機能を利用可能にするといったことが
> できないか現在検討が行われている、と同氏は語った。
0041デフォルトの名無しさんNGNG
>>40
その行動は微妙だな。
0042デフォルトの名無しさんNGNG
自分で手を入れて吐かせりゃいいんだけどな。
以前gcc依存バリバリのコードを処理する必要があるときにそうした。
0043デフォルトの名無しさんNGNG
>>42
オープンソースなのでやるだけ無駄だということですね。確かに。
0044デフォルトの名無しさんNGNG
吐く所だけGPLにすりゃいいだけだもんな。
敵に塩を送らないってだけの話だな。
0045デフォルトの名無しさんNGNG
Build status for GCC 3.4
http://gcc.gnu.org/gcc-3.4/buildstat.html

Build status for GCC 3.3
http://gcc.gnu.org/gcc-3.3/buildstat.html


3.3.5でshやsh4はまだなのかぁ..。
0046デフォルトの名無しさんNGNG
age
0047デフォルトの名無しさんNGNG
>>37
casts-as-lvalue って何で騒がれてるの?
Linux界でだけ?
0048デフォルトの名無しさんNGNG
大体cast-as-lvalueがどういう意味なのかも知らん。
0049デフォルトの名無しさんNGNG
cast as lvalue は大昔からのGNU拡張でわ?

たいていは回りくどい書き方に修正すればANSI互換に書き直せるハズ。
0050デフォルトの名無しさんNGNG
>>47
普通の C / C++ で *(int*)&d = 1; とか書くところを、gcc では今まで (int) d = 1; と書けてた(んだと思う)。
簡易unionみたいなもの。さほど意味の無い変な拡張だけど、使ってる人もいたんだね・・・
0051デフォルトの名無しさんNGNG
gccを導入したいんですがどこからどうしたらいいのかわからないので
詳しく説明してあるページとかあったら教えてください、日本語で
0052デフォルトの名無しさんNGNG
ホスト(コンパイラを走らせる環境)は何だよ?
0053デフォルトの名無しさんNGNG
windowsなんですがうごきますか?
0054デフォルトの名無しさんNGNG
>>53
cygwin mingw SFU(interix) coLinux どれか選べ
0055デフォルトの名無しさんNGNG
cygwinなりmingwなりで検索しる
005653NGNG
ラジャ
0057デフォルトの名無しさんNGNG
>>50
なるほど。
0058デフォルトの名無しさんNGNG
cygwinについてるgcc用のSTLのrandom_shuffleって壊れてませんか?
全然シャッフルしてくれないんですけど?(最後の要素が先頭に移動するだけ)
同じコードをVC++7.1で動かしたらちゃんとシャッフルしてくれました。
0059デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1058134693/122-124n
0060デフォルトの名無しさんNGNG
質問させてください。
Adaを含めてMinGW-BSDクロスコンパイラを作りたい場合、どうconfigureすればいいですか?
0061デフォルトの名無しさんNGNG
>>59
それでうまくいきました。どうもありがとう。
しかし…なぜデフォルトでちゃんとシャッフルしてくれないのだろうか…。
(clでは第3引数なくてもちゃんとシャッフルしてくれました。)
0062デフォルトの名無しさんNGNG
cygwin の lrand48 が悪いらしい。
0063デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
printf("abc");
}
という内容のファイルをコンパイルするとヘッダファイルがないといわれるんだけど何故?
0064デフォルトの名無しさんNGNG
>>63
ヘッダファイルがないから。
ちがうか?
0065デフォルトの名無しさんNGNG
includeパス間違い。ユーザ マニュアル見て設定しる
0066デフォルトの名無しさんNGNG
>>60
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14626
俺にはドキュメントからは見つけられなかった
0067デフォルトの名無しさんNGNG
>>39
> 4.0上で>>20のエラーは"Mudflap"て機能が働いてるって事?
違うよ
0068デフォルトの名無しさんNGNG
-fstrict-aliasingと-funit-at-a-timeはメリットよりデメリットのほうが多い気がする。
0069デフォルトの名無しさんNGNG
あのね、linuxとかgccはビルド環境もターゲット環境も多岐にわたるから、
中核部分の開発が激しく盛り上がってるときはどうしてももっとも主流の環境が
中心になるのだよ。LinuxだったらターゲットCPUはx86系で開発環境はLinux上、つまり
セルフコンパイル環境がね。といっても他の環境でも試さなければ問題が発見できないから、
それはそれで行なうわけ。

まあ1つのターゲットと1つの環境でしか開発したことのない人間は黙ってロッテことですな(笑
たとえばautoconfとか使ったことある?ターゲット環境やビルド環境に合わせてmakefileを自動生成数ツール。
0070gcc初心者 NGNG
-- test.c --
#include <stdio.h>

int main(void)
{
printf("abc");
return 0;
}
----------

test.cをgccで、
%gcc -o test test.c ........(1) と実行しますと、testの実行ファイルが作成されますよね、
ここで、(1)のtestが動作していることを確認しています。


そして、今度は、
%gcc -c test.c でtest.oオブジクトファイル生成で止めて、リンカ(ld)で実行ファイルの生成したいのですが、(gccから、ldは呼び出さない。)
必要なライブラリが分かりません、(1)に-vオプションで表示されたライブラリを読み込ませたのですが、
関数exitが見つかりませんでした。

test.oをldで、リンクするとき最小限に必要なライブラリを教えていただけませんでしょうか
また、startupオブジェクトはどのライブラリなのか教えていただけませんでしょうか。

ちなみに環境はSunOS 5.8です。今手元に実行環境がなくあいまいな質問になってしまいましたが、
よろしくお願いいたします。




0071デフォルトの名無しさんNGNG
gcc -v test.cしてみる
0072デフォルトの名無しさんNGNG
gcc -o test test.o ... でリンクすればよかったのにな。
0073デフォルトの名無しさんNGNG
なんだよ、最後は「実行しても何も表示されません」かと思ったのに。
全部読んで損した。
0074gcc初心者 NGNG
%ld でリインクできた。
0075デフォルトの名無しさんNGNG
リインク!!
0076デフォルトの名無しさんNGNG
GNUの創造主 インタビュー

Interview: Richard Stallman
http://kerneltrap.org/node/4484
0077デフォルトの名無しさんNGNG
キムチチゲ
0078デフォルトの名無しさん05/01/21 20:36:27
Did you receive the electric wave?
0079デフォルトの名無しさん05/01/21 20:46:45
yeno.
0080デフォルトの名無しさん05/01/21 20:52:46
最適化強くなってるから下手にフラグ付けると変なバイナリ出来そうだな…。
0081デフォルトの名無しさん05/01/30 03:26:20
rmsの波だの結晶、そのひとつがgcc。
0082デフォルトの名無しさん05/01/30 03:27:20
波だ→涙
0083デフォルトの名無しさん05/01/30 03:31:38
codesourceryって何者でつか?
0084デフォルトの名無しさん05/01/30 09:43:48
この前初めてインテルC++使ってみたけどGCC3.3.4に比較して45%以上の
パフォーマンス向上が確認できた。
0085デフォルトの名無しさん05/01/30 10:42:50
そりゃそうだろ
0086デフォルトの名無しさん05/01/30 12:40:18
>>84
それが売りだから。>IA32orIA64パフォーマンス
逆にIAマシンでgccとパフォーマンス変わらなければ存在意義ないし。
0087デフォルトの名無しさん05/01/30 17:50:53
# define __acquire(x)  __context__(1)

っていうコードで悩んでるんだけどな、
__context__(1)ってのはどういう意味なんだろう?
0088デフォルトの名無しさん05/01/30 22:07:00
Pentium3だとほんの少し速くなる程度。Pentium4なら劇的に速くなるのかな。
0089デフォルトの名無しさん05/01/30 22:50:51
GCCがPen4に対応する気がないから。
0090デフォルトの名無しさん05/01/31 13:24:52
gccってのはなにもIAマシンだけに固執してるわけではない。(IAユーザは多いが)
0091デフォルトの名無しさん05/01/31 13:28:01
しかし、g++の最適化がそれほど研かれてない気もする。
それもパフォーマンスが悪い原因の一つかな。
0092デフォルトの名無しさん05/01/31 13:42:33
gccはクロス・コンパイル機能はダントツかもしれんな。
0093デフォルトの名無しさん05/01/31 13:44:45
CPUをgccに最適化するとよいと行ってみるテスト
0094デフォルトの名無しさん05/01/31 13:48:29
>>93
RISCにすればそこそこ速そう。x86が悪いんだ!
0095デフォルトの名無しさん05/02/01 00:41:19
捕手
0096デフォルトの名無しさん05/02/01 01:01:14
gccは多態性がある。
0097デフォルトの名無しさん05/02/01 02:28:38
http://gcc.gnu.org/wiki
0098デフォルトの名無しさん05/02/01 05:06:43
大勢がx86-64にチェンジすればまた変わるんだろうな
レジスタ数増えれば最適化のチャンスも増えるし
0099デフォルトの名無しさん05/02/01 06:01:30
autovectorizationをgcc3にバックポートすればもっと変わる
0100デフォルトの名無しさん05/02/01 09:05:12
素直に4使えば?
0101デフォルトの名無しさん05/02/01 10:16:17
>>99
mudflapを3に(ry
■ このスレッドは過去ログ倉庫に格納されています