- 1 名前:デフォルトの名無しさん [2009/06/27(土) 08:34:50 ]
- 史上最強かもしれないツール、GCC(GNU Compiler Collection)について語るスレ。
GNU本家のGCCページ gcc.gnu.org/ Binutils - Collection of binary utilities ←これも必要だぞ。 www.gnu.org/directory/GNU/binutils.html GNU Binutils sources.redhat.com/binutils/ GCC online documentation gcc.gnu.org/onlinedocs/ Installing GCC gcc.gnu.org/install/ GCC Timeline gcc.gnu.org/releases.html#timeline Calendar gcc.gnu.org/develop.html#timeline 前スレ GCCについて part8 pc12.2ch.net/test/read.cgi/tech/1192201659/l50
- 159 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 12:23:37 ]
- 記憶だと、gcc 4.4でiccの最適化を越えてる
- 160 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 12:59:09 ]
- それはないから
- 161 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 13:05:18 ]
- GCCをアーキテクチャ決め打ちのICCと比較しようとする時点で
頭の悪さが丸出しw
- 162 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 14:10:45 ]
- multimedia.cx/eggs/last-performance-smackdown-for-awhile/
multimedia.cx/eggs/wp-content/uploads/2009/05/64-bit-performance-2009-05-04.png
- 163 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 14:35:52 ]
- やるじゃんgcc
- 164 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 20:50:27 ]
- >>162
64Bitだと偉い差だ。そうえいばx264なんかもビルドしてバイナリ配ってる人なんか32Bitは gcc3.4.6なんだけど64Bitはgcc4.4を使ってる。 ちょっとgcc4.4.2を落として来るわw ffmpeg自己ビルドなのでw
- 165 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:06:59 ]
- gcc4.4系統はバグもあるし
ライセンス問題もあるから使わないほうがいいぞ
- 166 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:10:40 ]
- まあ! なんて素敵なFUDでしょう!!
- 167 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:15:05 ]
- とりあえずbinutilの2.20が10/16に新しいの出てたんでまず更新。
でgcc4.4.2を気合のシステム上書き(現状4.3.4)の--prefix=/usrインスコでコンパイルスタートして 5分くらい経ってやっぱダメだろって思ってCTL+C押して--prefix=/opt/gcc-4.3 --program-suffix=-4.3 にしたヘタレです・・・ 今コンパイル中、CPUフェノムなんで--with-tune-32=k8 --with-tune-64=amdfam10こんなのもつけてみました。
- 168 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:16:54 ]
- おおお、焦ったww
--prefix=/opt/gcc-4.4 --program-suffix=-4.4ですねw 変なとこからコピペしたから4.3になってた。本当に4.3のままconfigしちゃったかと思って自分でビビったわ
- 169 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:28:09 ]
- >>164
グラフの目盛りよく見ろ。そのうえでえらい差って感じたんならいいけどさ。
- 170 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:30:37 ]
- >>169
ああああああああああああああああああああああああぁぁぁぁ
- 171 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:52:36 ]
- とか言いながら終わった、しかしグラフには騙された・・・
$ /opt/gcc-4.4/bin/gcc-4.4 -v Using built-in specs. Target: x86_64-linux-gnu コンフィグオプション: ../configure --prefix=/opt/gcc-4.4 --program-suffix=-4.4 --enable-shared --with-system-zlib --without-included-gettext --enable-threads=posix --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --with-gmp --with-tune-32=k8 --with-tune-64=amdfam10 --with-multilib-list=x86_64-linux-gnu,i386-linux-gnu --build=x86_64-linux-gnu --host=x86_64-linux-gnu スレッドモデル: posix gcc version 4.4.2 (GCC)
- 172 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:19:45 ]
- こんな目盛りなら騙して欲しいよな
i.msdn.microsoft.com/Aa290049.vcia64alignment_fig2(ja-jp).gif
- 173 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:57:31 ]
- ゲーツェーツェーにはCPP CXX g++ などなど
C/C++フンパイラだけいろいろあるけど 何がどう違うの。
- 174 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:20:15 ]
- CPP CXXはシェルの変数じゃなかろうか
- 175 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:28:55 ]
- cpp はプリプロセッサだろ。 常識的に考えて。
C++ のコンパイラやコンパイラドライバではない。 システムによってはコマンドに + の文字が使えないことがあるので、 便宜上用意されているのが cxx 。 たぶん、中身は一緒だと思う。
- 176 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:23:33 ]
- cc、cxx、c++辺りは、GCCでないシステム標準のコンパイラのことがある。
LinuxなどGCCを標準のコンパイラとして採用していると、GCCへのシンボリックリンクになっているけど。
- 177 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 03:47:24 ]
- >>159
よぉ、AMD使い!
- 178 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:13:00 ]
- AMDでgccに負けるほどiccってダメなのか
- 179 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:14:48 ]
- 商用コードは品質が悪いから仕方ない
- 180 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:35:20 ]
- 最近のGCCは結構すごいよん
参考 www.linux-kongress.org/2009/slides/compiler_survey_felix_von_leitner.pdf
- 181 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:15:09 ]
- それ読んでgcc 4.4.3で試したけどその通りに最適化してくれないことがままあって困るw
- 182 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 19:54:02 ]
- パーパプー パーパプー パーパプーパーパプーパーパプー
ピーロピーローリーローリロ ででーででーででー パスーン ピンポロピンポロピンポロピロピロプー 未だに自作のプログラムでダウボーイを作ってやろうと思っているのにできねえ俺は もうだめだ
- 183 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 12:27:58 ]
- gcc(ver4.3.2) のコンパイルオプションで、
-lXm -lXt -lSM -lICE -lXpm -lXext -lX11 -lm とか必要なライブラリ全てを記述しなくても -lXm だけでOKでした。 何か指定したライブラリ(この場合 /usr/lib/libXm.so.2.0.1) の依存ライブラリを調べてリンクしてくれるようですが、これって昔からそうだったのでしょうか? 10年近く前は、一つでも指定を忘れると駄目だったので、よく知らないライブラリも呪文のように指定していたような記憶があるのですが。
- 184 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 19:08:48 ]
- >>183
ライブラリが収まってるディレクトリに libXm.la ってファイルがないか? それ読んでみ
- 185 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:34:35 ]
- gcc 単体で libtool ライブラリなんか見るの?
- 186 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:54:52 ]
- ビルドした時刻をバイナリに埋め込みたいんだけど
なんかいい方法ある? 最後にリンクするときに日時がわかるものを埋め込みたい
- 187 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:22:47 ]
- コンパイル日時じゃなくてリンク日時?
前者は__DATE__とか__TIME__とかあるけど
- 188 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:36:38 ]
- >>187
Makefile で、リンクの直前にそれかけるしか無いんじゃないかな。
- 189 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:56:37 ]
- __DATE__,__TIME__を初期値にしたグローバル変数だけの
オブジェクトをリンクごとに生成して埋め込めば?
- 190 名前:189 mailto:sage [2009/12/01(火) 21:58:39 ]
- ごめん、>187と同じだった。
- 191 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 13:41:22 ]
- 質問!
Linux@i386(IA-32)のgccでC言語とアセンブラを組み合わせて使っています。 ebx, esi, ediは通常ならcallee-saveですが、 アセンブラ側の都合でcaller-saveとして扱わなければならない箇所があります。 今はmanを参考に-fcall-used-〜オプションを付け プログラム全体でcaller-saveとして扱っています。 関数ごとにcallee-save, caller-saveを切り替えて速度を稼ぐことは可能ですか? 可能なら方法を教えてください。
- 192 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 14:57:42 ]
- >>191
特殊な ABI を要求する部分だけ別モジュールにして、 そこだけ CFLAGS 切り替えればいいんじゃない? 昔組み込みでそんな感じにしてたけど。
- 193 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:19:44 ]
- ああ、でも callee-save 環境から caller-save 環境を
どう呼び出かってのがあるね。どうやってたかな…。
- 194 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:22:57 ]
- ttp://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Function-Attributes.html#Function-Attributes
この中になければないと思う
- 195 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:28:05 ]
- ようわからんけど、attributeで指定するとか?
- 196 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:31:40 ]
- すまん、ちょっとよく覚えてない。多分 hook を挟んで
どうにかしていたと思う。 ただ 個別に -fcall-used-REG を保守するのも段々面倒 になってきて、最後は「えいや」で setjmp ばりに保存 する hook にしちゃった気がする。
- 197 名前:191 mailto:sage [2009/12/06(日) 16:52:18 ]
- >>192-196
ありがとうございます。 まず__attribute__((returns_twice))を調べてみます。
- 198 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 15:41:53 ]
- 教えてください
gccでjavaの練習をやろうと思うのですが、 gcc -vで --enable-languagesにjavaが含まれていれば大丈夫でしょうか gcj -vだとcommand not foundになります
- 199 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 16:54:23 ]
- どうしても gcj を使わなければならないという理由がないのなら
Sun の JDK をインストールして勉強しれ。 # command not found に対処できない人が使えるようなものじゃないから…
- 200 名前:198 mailto:sage [2010/01/08(金) 19:20:48 ]
- レストン
もう少しgccを触って駄目だったらJDK逝きます
- 201 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 09:12:51 ]
- とっととJDKに逝け
- 202 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 07:23:45 ]
- naked属性な値を返す関数でreturnがないって警告が出るんだけど
この警告だけ消す方法ないですか? 戻り値はインラインアセンブラ内で書いてる
- 203 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:03:10 ]
- 戻り値をインラインアセンブラで
int hoge(void) { int ret; asm ("hoge":"=r"(ret)); return ret; } みたいに書いてみたら
- 204 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:10:06 ]
- gotoでぶっ飛ぶのかもよ。
- 205 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:16:31 ]
- >>203
やっぱそれしかないですか その方法だと余計なレジスタが増えるのがどうも ありがとうございました
- 206 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:25:26 ]
- 余計なレジスタは増えんでしょ
-fomit-frame-pointer付きでコンパイルしてみたら
- 207 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:28:58 ]
- register int ret asm(レジスタ);
にしたら指定のレジスタ使ってくれました gccのバージョンで変わったりしないか不安ですけど
- 208 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:01:15 ]
- ほうほう
- 209 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 07:17:49 ]
- 戻り値に使われるレジスタ以外を
asmで破壊されるレジスタに指定するという方法もあるのでは
- 210 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 09:52:26 ]
- >>207
その仕様は今まで変わったことないから大丈夫でないかとは思うが。 >>209 clobberしすぎるとcc1が文句言ってくるので程々にしませう。 ということで妙なコードを書くときは、その関数を __asm__( "func:\n\t" : "ret"); みたいに書かないとダメだと思う。
- 211 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:25:56 ]
- peephole2って凄いね
- 212 名前:デフォルトの名無しさん [2010/01/19(火) 22:22:38 ]
- Linux x86_64 な環境において、gcc version 4.3.4 (Target: x86_64-pc-linux-gnu) な GCC を使って
下記のような XXX.so の中の関数を dlopen、dlsym を使ってよびだせるようにコンパイル すればどうすればいいのでしょうか? XXX.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped 調べて、-m32 -ldl をオプションに指定するようにしてみましたが segmentation fault になってしまいます。 アドバイスいただけないでしょうか?
- 213 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 22:42:40 ]
- 基本的に無理
- 214 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 01:30:21 ]
- どうしてもということになれば、nspluginwrapperみたいな物を
作って何とかするしか。
- 215 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 10:29:14 ]
- gcc -m32 hoge.c でいいんじゃないか?
- 216 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 06:11:12 ]
- 4.4.3
- 217 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:28:56 ]
- GCC開発者らがGoogleの「Go言語」をサポートする方針を発表
sourceforge.jp/magazine/10/01/29/0250228
- 218 名前:デフォルトの名無しさん [2010/02/02(火) 19:20:20 ]
- >>217
ブランチ、既にできてるよ。> gccgo
- 219 名前:デフォルトの名無しさん [2010/02/02(火) 19:21:42 ]
- か
- 220 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 20:11:27 ]
- goってgccに入れるほどのもんなの?
- 221 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 20:12:43 ]
- 政治的な圧力はあったかもね。
- 222 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 20:22:23 ]
- 単にぐぐるがメンテナを出しただけだろ?
- 223 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:11:44 ]
- llvmじゃなくてgcc、というのが面白い。
ライセンス的にllvmの方が好まれると思ったんだが
- 224 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:26:35 ]
- adaとか使ってる人いるの?
金さえ出せばなんでも入れてもらえるんじゃない?
- 225 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:01:39 ]
- Google勤務のgccコミッターが何人もいたはず。
- 226 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:12:26 ]
- >>223
llvmはgccのbackendに出来るし。
- 227 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:54:01 ]
- >>224
カネじゃダメだろ 人とコードを出さないと
- 228 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:55:22 ]
- 逆に言えば、人とコードの切れ目が縁の切れ目
- 229 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:10:11 ]
- C#とかは、金と人は出せるが、コードが出せないMSだからか。納得。
- 230 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:23:58 ]
- MS は自前で開発環境用意して囲い込みしたいからだろ。
と、マジレス
- 231 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 23:09:07 ]
- arm用gcc遅いなんとかしろ
- 232 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 10:16:35 ]
- arm社に文句言え
- 233 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 10:45:29 ]
- ARM社に言ってもしょうがないだろ
IARとか、RVDSはもっと速いのかな?
- 234 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 15:55:30 ]
- なぜgccにはstricmpが無いんだ?アホなのか?
- 235 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 15:57:47 ]
- コンパイラの問題じゃないだろ
- 236 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 19:55:21 ]
- strcasecmpがあるから
- 237 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 20:15:07 ]
- strcmpiじゃなかったっけ
まあ今となっては良い思い出
- 238 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:40:15 ]
- >>234,236,237
コンパイラとライブラリは切れば切れる関係。 例えば同じ Windows 上の gcc でも、Cygwin と MinGW で使える関数が 違うでしょ。
- 239 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:17:07 ]
- ところでnewlibって何なの?
こういうネーミングはやめてほしいんだが このセンスはさすがに引く 古くなったらどうすんだよ
- 240 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:09:27 ]
- 最近は年末にリリースされてるから
- 241 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:00:11 ]
- それならclibだと。
- 242 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:56:29 ]
- clubt.jp/product/92651_3621255.html
- 243 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 02:55:25 ]
- >>234
STRing Ignore Compareってw センスの悪い命名…
- 244 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 14:11:16 ]
- i は Ignore なのか?
case Insensitive の i だと思った 悪い命名なのは疑いようがないけど
- 245 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:46:25 ]
- sprintfおせーぞ
gccだけおせーんじゃ なんとかしろ
- 246 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:53:27 ]
- 文句言う前に、自分で早いsprintfを書けばいいのに
- 247 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 00:29:39 ]
- std::sprintfとかsprintfと紛らわしい
関数作るんじゃねーよ
- 248 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 03:13:31 ]
- >>231=>>234=>>245=>>247だとすると、
何のプラットフォームでどんなものを作ってるのか、大体予想つくな
- 249 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:20:29 ]
- >>248
こういう発言ってついったの方が楽しいのにね
- 250 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:09:00 ]
- 笑われてるだけでしょ
- 251 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 14:34:01 ]
- >>250
笑うなよ
- 252 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 18:55:54 ]
- gccスレでぐっちてる時点で...
- 253 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 16:26:44 ]
- >233
ARM固有の最適化部分のメインコミッターのほとんどはARM社からお金もらっている人々だよ 最適化で、いつまでたってもARM純正に勝てないのはARM社がコントロールしてるから ARMのプラットホーム使わないといけない人のほとんどは、gccの中身なんて弄ってる余裕が無いよ ARMを使ったPCが普及すれば、変わると思うけど
- 254 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:12:55 ]
- 昔、玄箱スレでgccはARMよりPPCのが効率よいコード吐くって話があったけど、
状況変わらず? ARMの命令セットがやや特殊なせいなのかな
- 255 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:21:04 ]
- >>254
自社のコンパイラより効率的なバイナリを 生成するコンパイラは、排除するって明言しているから どうにもならないよ。
- 256 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 07:57:43 ]
- gccの文字列処理おせーんだよ
なんでgcc3.4でSSE4.2に対応してねーんだよバカ
- 257 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 08:01:10 ]
- おそい書き方したお前が悪い
- 258 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 12:45:50 ]
- >>256
gcc4使えばいいじゃん。
- 259 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 02:57:51 ]
- pc1:
2.95.3 3.3.6 pc2: 4.3.4 4.4.3 二つずつ入れてて計4つ >>256 使い分けりゃいいじゃん。
|

|