- 1 名前:デフォルトの名無しさん [2006/04/18(火) 19:57:04 ]
- 史上最強かもしれないツール、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
- 862 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 17:02:05 ]
- ADAスレがもう織田信長スレしか無い件
- 863 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 17:02:58 ]
- 違った武田信玄だったけどもう落ちてるオワタ
- 864 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 17:16:05 ]
- 英語は発音大事と言ってはいるものの、実際に
インペろぅベド(imperoved)とか言われるとムカッと来るからな。
- 865 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 17:17:55 ]
- グロゥバロゥとかヴァアミアンとかね
- 866 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 01:22:29 ]
- 織田信長って言語まじであるの?
- 867 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 02:28:47 ]
- >>864
そんな英単語は無い
- 868 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 11:11:33 ]
- いまgdbのバグ?みたいなものを追いかけてて、再現条件が
・ある64bitローカル変数(long long)が ・最適化によってもoptimized outされずに ・スタックに取られずレジスタに直接アサインされる というあたりにあるのではないかと考えてます。この時 (gdb) p var の 出力での sign bit のハンドリングが違うような感じ>gdbのバグ? で、これの再現コードを作ろうとしているのですが、 ・レジスタに乗せる方向に誘導 -> register ・最適化させない -> volatile? にすると、register は無視で普通にメモリに乗ってしまってうまく いきません。で、 volatile register int64_t max asm("%edi:%esi"); でそんな風にならないかと試し中なのですが、↑はレジスタ1つ(32bit)なら いけるものの、2つで64bit変数を表したい時の書き方がわかりません。 どなたか教えてくださいませ・・・
- 869 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 12:47:51 ]
- アセンブリ手で書けばいいじゃん
- 870 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 14:00:44 ]
- デバッガから見える変数にバインドされるレジスタを、どうやって
アセンブリ手書きで設定するのか、正直わかりません。 シンボルデバッグ情報に変数<->レジスタ・メモリアドレスマッピングは 入っていると思うんですが、これも手書きできるということ?もしかして インラインアセンブラではなく、フルアセンブラで書くという話なら それはちょっと自分の能力を越えてるような・・・
- 871 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 14:05:42 ]
- >>870
こんな関数でもコンパイルしてみりゃ何をすればいいか判るんじゃね? -- long long func(long long foo) { return foo; }
- 872 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 18:20:08 ]
- >>971
それって .debug_* セクションを自分で作れとやっぱり言ってる? info gdb-int してみたけど、激しくハードル高い・・・
- 873 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 18:37:11 ]
- >>872
戻り値は64bitのレジスタ変数と同じ状態になるわけだが。 ついでに、gcc -S-gすればデバッグ情報が漏れなく埋め込まれるわけだが。 もしかして、その程度の知識もないのにデバッガを疑っちゃってるわけ?
- 874 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 19:19:00 ]
- >>873
gdbが黒だとは言ってなくて、ただgdbからの見え方がその条件差で 必ず違うので、もっと詳しく見たいと思ってます。 そのコードだとgdbからは変数はレジスタにバインドされて見えないので 別の方法をまだ考えてますが、-Sのダンプでデバッグ情報埋め込み方法を 調べられるという考えは頭から抜けてました。やってみます。
- 875 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 09:32:01 ]
- もっと謙虚になって出直せ。
- 876 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 20:52:19 ]
- gdb のソース読めばいいのでは?
- 877 名前:868 mailto:sage [2007/09/16(日) 22:08:28 ]
- すみません、>>875 の通り、私ごときのレベルでしていい話ではなかったと
痛感しているので、全部なかったことにして下さい。このスレに書いていいと 認めてもらえる程度になるまでROMってます。
- 878 名前:デフォルトの名無しさん [2007/09/18(火) 13:32:01 ]
- i686環境で例えばPPC用に何らかのアプリなどをクロスコンパイリンゲすると
本当にPPC環境で動くもんなの??? 玄箱HGでも買おうかと思うのだが、さすがに玄箱でビルドとかすると、 PPC266MHzじゃつからろうなあ、と思って、 できれば速いi686環境でPPCにガチガチに最適化してから玄箱に転送できれば。
- 879 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:49:25 ]
- 何をビルドするの?
ほとんどバイナリパッケージが揃っているけど? > 玄箱debian 「ガチガチに最適化」とかヲタ臭いことがやりたいなら、 ソースからバイナリパッケージを再ビルドすれば?
- 880 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:49:31 ]
- >>878
簡単なテストプログラム書いて、動くかどうかやってみればいいんじゃないの?
- 881 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:59:31 ]
- >>880
まだ買ってないだろw
- 882 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 14:01:16 ]
- >>881
linuxじゃないけど、クロス環境でやったことあるけど...
- 883 名前:デフォルトの名無しさん [2007/09/18(火) 14:28:24 ]
- クロス・ダァイッチュラント
- 884 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 14:29:50 ]
- kurohako遅いよ
- 885 名前:デフォルトの名無しさん [2007/09/18(火) 14:58:58 ]
- ゲーツェーツェーを来んあぴるするのに4時間くらいかかりそうだな
Pentium3 500MHzでさえ4時間かかったのだから
- 886 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 15:04:49 ]
- コンパイルを4時間とか考えられないし見たことも無い俺は素人
- 887 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 15:24:52 ]
- X68kでgcc1.3のコンパイルに一晩かかった時代もありました
- 888 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 15:32:21 ]
- 動画のエンコードをやるようになると、4時間というのは大した時間に思えなくなる。
2passで47時間とかあるからな。
- 889 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 16:31:48 ]
- それはさすがにPCごと買い替えとか考えるべき時間のかかりようだと思う。
- 890 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:06:07 ]
- 24時間ビーテレだから
1時間2時間コンテンツでそれだけかかったらアレだが。
- 891 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:06:17 ]
- >>885
もっとかかったような気もするが… 寝る前にmakeしておくと、起きるまでには終わってるくらい。
- 892 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:13:12 ]
- 起きたらエラーで止まってたとか?
- 893 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:59:15 ]
- 昔は X11 をコンパイルするのに12時間とか普通やったよねぇ…
- 894 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:19:35 ]
- 今はOpenOfficeが身近で最もヤヴァいヤツだと思うんだがどうよ?
- 895 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:22:28 ]
- Qtのビルドはまいったな。ホントに一晩かかってしまった。
- 896 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:04:58 ]
- 時間かけたくないから、クロスコンパイルするって話じゃないのか?
- 897 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 09:59:48 ]
- 今でもクロスコンパイルが難しいアプリもあるけどね。
コンパイル時に実行ファイルを生成して利用するような奴。 昔Linux Zaurusで結構苦労した。
- 898 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 10:18:38 ]
- ちゃんとしたプロジェクトなら
configure等でhostとtargetを指定できる
- 899 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 15:15:18 ]
- そもそも、クロスと名の付く奴はどれもこれもむずかしい。
「クロスカウンター」狙ってできる奴などいないであろうほど難しい。 「クロスコンパイル」やり方がまず難しいし、それでいいのかどうかの判断も難しい。 「マクロス」ガンダムのパクリなのか何なのか、評価の付け方が難しい。 「セクロス」難しい。
- 900 名前:デフォルトの名無しさん [2007/09/19(水) 15:25:33 ]
- GCC5になって3系で作ったときのバイナリの実行速度と4系の新機能がついに統合される夢を見たこともある。
- 901 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 15:33:37 ]
- ia32の最適化は限界なんだろ?
世の流れは爆速、爆熱CPUを求めてるみたいだね?
- 902 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 16:31:06 ]
- 流れは爆数コア、爆並列だ。
- 903 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 16:31:48 ]
- え、OSがついていけてないような?
- 904 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 16:44:53 ]
- 時代はオプテロン
- 905 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 16:55:13 ]
- >>903
そこで仮想化ですよ
- 906 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:48:48 ]
- いきなり豆知識 「殺菌灯」
ディパートメントゥストゥア(英語は発音大事だがこのように書くと非常にムカつくので注意が必要)などでよくある殺菌灯は 何か特別なものだと思い込んでいるのもいるが、あれは蛍光灯と同じである。 蛍光灯というのは水銀蒸気を封入し、そこに電荷をかけることで強力なUV-Cと呼ばれる紫外線を発生させる。 (封入されているのは水銀蒸気であるから、割れた蛍光管のそばにいるのは危険である) 蛍光灯と殺菌等の違いは、この紫外線をどう利用するかによって異なり、 蛍光物質で紫外線を吸収して可視光線に変換するのが蛍光灯 そういうことをせず、直にUV-Cを出すのが殺菌灯 というわけだ。 UV-C領域の紫外線は殺菌性に優れるが、皮膚に深く浸透して細胞まで害を及ぼすため 直視してはいけないのである。
- 907 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:50:44 ]
- GCCとどういった関係が
- 908 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:09:59 ]
- >>907
>水銀蒸気で殺菌する まで読んだ
- 909 名前:デフォルトの名無しさん [2007/09/19(水) 21:35:13 ]
- ↓で誘導されますた
マルチスレッドプログラミング相談室 その6 pc11.2ch.net/test/read.cgi/tech/1187008532/ 【OS】 Debian Etch Linux kernel 2.6.18 【言語】 C pthread 【実行環境】 GNU gdb 6.4.90-debian gcc (GCC) 4.1.2 gdbでのマルチスレッドのデバッグ中、任意のスレッドでステップ実行をしていると とつぜんカレントスレッドが切り替わり、 ステップ実行していたスレッドの実行位置が失われる現象に遭遇します。 デバッグ対象のプログラムは、動作確認がとれているオープンソースのプログラムです。 原因、回避法等ご存知のかた、ご教示いただけないでしょうか
- 910 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:59:00 ]
- >>909
裏のブレークも引っかかった
- 911 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 22:12:45 ]
- >>910
仮に別スレッドのブレークポイントでスレッドが切り替わったとしても threadコマンドで元スレッドにもどれますよね? 切り替わった時点でステップ実行していたスレッドの現在位置が??() (こんな表示) になって元に戻れなくなってしまいます。
- 912 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:39:25 ]
- GCC4.2.2を使ってました。このスレを読んでいたら4.1か4.3にした方が良いような気がしてきたので
4.3をコンパイルしたらエラーもなく終わったのでインストール。 しかし。。。カーネルのコンパイルが出来ません(TT) getnstimeofdayとかudivdi3とかのエラー関係がでます。おとなしく4.1系に戻そう・・
- 913 名前:デフォルトの名無しさん [2007/09/22(土) 23:26:06 ]
- Linux(x86,32bit)で下記プロセサを使っている場合、-mXXX や -mcpu=XXX や -march=XXX には何を書くのが良いのでしょうか?
processor : 0 vendor_id : AuthenticAMD cpu family : 15 model : 47 model name : AMD Athlon(tm) 64 Processor 3200+ stepping : 2 cpu MHz : 999.876 cache size : 512 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts fid vid ttp tm stc bogomips : 3537.29 clflush size : 64
- 914 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 23:46:49 ]
- -march=athlon
- 915 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 00:26:42 ]
- -march=athlon64
- 916 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 00:59:43 ]
- >>913
ゲントとかいうLinuxのサイトからですが gentoo-wiki.com/Safe_Cflags
- 917 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 01:33:38 ]
- じぇんつー
- 918 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 22:39:33 ]
- >>913
-march=k8 -msse3
- 919 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 23:43:46 ]
- 頼むからmarchを「マーチ」ちゅうのやめてくれと。
- 920 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 23:47:09 ]
- マーチです
- 921 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 01:23:18 ]
- ですマーチ
- 922 名前:920 mailto:sage [2007/09/24(月) 01:34:19 ]
- 予想通り
- 923 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 01:59:33 ]
- さりげな・く〜♪
- 924 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 10:05:21 BE:23579377-2BP(1)]
- >>913
-march=native
- 925 名前:デフォルトの名無しさん [2007/09/24(月) 18:27:32 ]
- gcc -Wp,hogehoge の-Wpって何をするオプションですか?
- 926 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:38:12 ]
- そんなんも知らんのか バカじゃねぇのw
- 927 名前:デフォルトの名無しさん [2007/09/24(月) 18:42:32 ]
- 質問を変えよう。
Fedoraのrpmのspecファイルを見ていると、CFLAGSに-Wp,-DXXX=YYYという指定をしている例がみられるの だけど、単に-DXXX=YYYとしない理由は何か考えられますか? gcc-4.1.2のinfoだと、-Wpはなるべく使うなと書かれているのだが...。 よろしくおねがいします。
- 928 名前:デフォルトの名無しさん [2007/09/24(月) 18:43:53 ]
- >>926 よろしく。
- 929 名前:デフォルトの名無しさん [2007/09/24(月) 21:57:37 ]
- 天才926降臨期待age
- 930 名前:デフォルトの名無しさん [2007/09/26(水) 12:27:49 ]
- MinGWの中の人がいつかきっとGCC3.4.6 for MinGWをリリースしてくれると信じてる。
- 931 名前:デフォルトの名無しさん [2007/09/27(木) 00:33:49 ]
- MinGW
ゴールデンウィークが最小限なこと。 休みが一日しかないに違いない。
- 932 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:49:16 ]
- ゴールデンウィークなんて死語だぜ
- 933 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:50:02 ]
- ゴールデンウィークなんて(毎年)仕事だぜ
- 934 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 12:48:27 ]
- GCC online docs
ジーシーシー オンライン ドクス なんだよドクスって ドクスとか言うな!!
- 935 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 13:04:36 ]
- >>931
2008年や2014年の 5月3日 = 土曜日 5月4日 = 日曜日 5月5日 = 月曜日 のことかー!!! # でも4月29日の昭和の日が火曜日だから、4/26(土)・27(日)・28(月)・29(火)の連休もとりやすいんだよねw
- 936 名前:935 mailto:sage [2007/09/27(木) 13:06:58 ]
- # やべっ、忘れてた。法改正されたから、2008年や2014年は5月6日が振替休日!
- 937 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 14:59:21 ]
- 掴もうぜ
ゴールデンボール
- 938 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 15:55:44 ]
- gcc4.2.2rcが先月末にあがってたので入れてみた。
マーチネイチブ、エムチュンネイチブ、何気にいいですね。なんかアプリの動きが早くなった。
- 939 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 16:05:31 ]
- >>938
>なんかアプリの動きが早くなった。 たぶん気のせいだよw
- 940 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 16:28:39 ]
- >>939
気のせいかなwww 4.2が正式リリースされてすぐに入れた時は逆に遅くなったような気がしたけど、今度のはいい感じなんだけど なあ。mplayerなんかではgcc関連の値をセットしなくてもconfigureかけるとアプリが勝手に-mtune=nativeに 設定してくるね。
- 941 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 12:21:41 ]
- >>938
mtuneをエムチュンと読むのにmarchがマーチと読む心は?
- 942 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 22:06:39 ]
- >>941
エムアーチ
- 943 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 22:21:24 ]
- えむつね/えむあーち
- 944 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 23:02:36 ]
- むちゅーん
むあーき
- 945 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 23:41:23 ]
- むとーね
まるは
- 946 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 00:47:05 ]
- まーくエッチ
- 947 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 01:21:57 ]
- こうして日々GCCは進化していくのであった
- 948 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 17:34:00 ]
- エムアークゥィティクチュワ!
- 949 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:45:18 ]
- ウィキピィーディア
- 950 名前:デフォルトの名無しさん [2007/10/06(土) 18:25:57 ]
- gccの--paramって、gcc4から使えるオプションだっけ?
あと、paramってコマンドラインでしか指定できないの?#pragmaで指定できると嬉しいのだが。
- 951 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 18:32:43 ]
- >>950 3でも使える。pragmaの件は知らん。
- 952 名前:大槻 [2007/10/06(土) 19:00:47 ]
- すべてはpragmaのせいです。
- 953 名前:デフォルトの名無しさん [2007/10/07(日) 00:18:12 ]
- ストールマンって今何してんの?
まだemacsでオナニーしてんの?
- 954 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 08:52:40 ]
- 秀○やSAKURAでオナニーするよりよっぽど良いべ。
- 955 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 09:15:57 ]
- 少なくとも人の役にたってるオナニーだからいいじゃねぇか
- 956 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 09:38:54 ]
- 公開オナニーてっこと?
- 957 名前:デフォルトの名無しさん mailto:sega [2007/10/08(月) 01:29:18 ]
- あるデバッグオプションを有効にしてコンパイルすると、
Segmentation faultで落ちたときにソースのファイル名と 行番号を表示するという機能があるらしいんですが どのオプションでしょうか
- 958 名前:デフォルトの名無しさん [2007/10/08(月) 01:39:02 ]
- >>957
OSがわからんからLinuxだとエスパー。 行番号情報をバイナリに埋めるには、gcc -g だ。できあがったバイナリをstripしないこと。 % file ./your_broken_software して、not stripped と表示されることを確認。 でも、SEGV食らったときに自動で落ちた場所を表示するコードを埋める機能はgccには無いよ。 一部のLinuxには、catchsegvというコマンドがついてるからそれ使え。 % catchsegv ./your_broken_software
- 959 名前:デフォルトの名無しさん [2007/10/08(月) 01:46:54 ]
- うそだ、ごめん。catchsegvだと、PCの値とかバックトレースはでるけど、行番号は出ないね。
素直にgdb上で実行するのがよいと思うが?
- 960 名前:957 mailto:sage [2007/10/08(月) 02:39:57 ]
- >>959
catchsegvか・・・ オッケー、刻んだ!
- 961 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 03:56:23 ]
- PCがわかれば addr2line -e a.out pc で行番号わかるよ。
- 962 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 09:29:06 ]
- $ gcc -g foo.c
$ gdb --batch -ex 'run あれば引数' ./a.out
|

|