GCCについて part8
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/10/13(土) 00:07:39GNU本家の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
前スレ
GCCについて part7
http://pc11.2ch.net/test/read.cgi/tech/1145357824/l50
0153デフォルトの名無しさん
2007/12/20(木) 15:19:01__GNUC_MINOR__
__GNUC_PATCHLEVEL__
0154デフォルトの名無しさん
2007/12/20(木) 15:21:44#if ( __GNUC__ >= 4 )
かな
0155デフォルトの名無しさん
2007/12/20(木) 22:11:00>>153
>>154
ありがとうございました。助かりました。
0156デフォルトの名無しさん
2007/12/23(日) 01:06:10特殊かもしれんが
0157デフォルトの名無しさん
2007/12/23(日) 04:28:24gcc 2.9.6
gcc 3.2.3
から、
RELE version5のgcc 4..xに変更したんだけど、コードの修正メンドくせー、
互換性無いのって悲しいね。
0158デフォルトの名無しさん
2007/12/23(日) 09:31:31○コードが汚い
ザルだった文法チェックに救われていただけ
0159デフォルトの名無しさん
2007/12/23(日) 10:01:110160デフォルトの名無しさん
2007/12/23(日) 10:36:37Cだとgccの移行は簡単だけど、C++だと悲惨。
2->4なんて。
コンパイルエラー/ウォーニングになるのはいいけど、
コンパイラが検出できない奴など。
例えばlookupのルール変更とか。
ADLは便利だけど、難しいから。
0161デフォルトの名無しさん
2007/12/23(日) 17:53:45馬鹿コーディングだから移行が難しいんだよ。
俺も新人だった頃の自分のコードを呪ったよ。
きちんとしたコードはすぐ移行できた。
0162157
2007/12/23(日) 23:53:40トークンの連結
型(int -> bool)
プロトタイプ宣言
関係が9割超
0163デフォルトの名無しさん
2007/12/30(日) 00:12:030164デフォルトの名無しさん
2007/12/30(日) 00:37:490165デフォルトの名無しさん
2008/01/07(月) 09:31:10バグ潰し終わらねー感じ
使ってみてもICEとかc++のスコープとか色々おかしい印象がある
開発者がんばってくれー
0166デフォルトの名無しさん
2008/01/08(火) 02:18:54mudflapというオプションを初めて知った。 ひで〜ネーミングだな。
0167デフォルトの名無しさん
2008/01/15(火) 18:42:33という条件下だと、fPICって常に付与してていいもんなのか?
0168デフォルトの名無しさん
2008/01/15(火) 23:54:54> cat a.c
#include "stdio.h"
#define AAA(a) BBB(#a)
void BBB(char *str) {
printf("%s\n", str);
}
int main() {
AAA(あ"い");
BBB("あ\"い\"");
}
> gcc --input-charset=cp932 --exec-charset=cp932 a.c
> a.out
あ"磚
あ"い"
AAAの方とBBBの方で両方同じ結果が得られそうなのですが、
AAAの方でうまくいっていないのを解決したいと思っています。
ここでは標準出力していますが、内部文字コードはSJISのまま解決したいと思っています。
よろしくお願いいたします。
0169デフォルトの名無しさん
2008/01/16(水) 08:04:12http://homepage2.nifty.com/m_kamada/fractalp.htm#mandelbmp_c
のサイトにある、complex.hを読んでいるんですが、
gccでマクロを展開してここのソースを読むと、
/* setjmp(cjmpenv)の返却値 */
#define C_DIVIDE_BY_ZERO 1 /* 0で除算しようとした */
#define C_ARG_ZERO 2 /* 0の角度を求めようとした */
略
#endif
#if __GNUC__==2
#define complex __complex__
#define Re(z) (__real__ (z))
#define Im(z) (__imag__ (z))
#else
typedef struct {
double re;
double im;
} complex;
などごっそり書いてあった部分が、
/* setjmp(cjmpenv)の返却値 */
# 24 "complex.h"
typedef struct {
double re;
double im;
} complex;
# 77 "complex.h"
/* xの実数部にsを加える */
# 89 "complex.h"
/* xの虚数部にsを加える */
と、# 24 "complex.h"や# 77 "complex.h"などに置き換えられているようです。
この#24や#77はどういう意味なのでしょうか?
0170デフォルトの名無しさん
2008/01/16(水) 08:25:473.4では化けるね
4.2.2だと化けなかった
0171デフォルトの名無しさん
2008/01/16(水) 08:26:18「複素数値を持つ式 exp から実数部を抽出するには、
__real__ exp と書きます。同様に、虚数部を抽出するには __imag__ を使います。これはGCCの拡張である。」
とあり、printf("b=%d + %d I¥n", __real__ exp, __imag__ exp); で複素数表示出るのですが、
コレは__real__ という関数名なのでしょうか?
でも関数だと( )が必要だし....
そもそも__みたいな変な名前のマクロをどういう意図で作ったのでしょうか?
complex.hを見ても良くわかりませんでした。
__のような物がつくプログラムを見たのが初めてで、非常に理解に苦しんでいます。
0172デフォルトの名無しさん
2008/01/16(水) 11:22:26マクロ展開前の行番号。コンパイル時にエラー行を表示するためにそう
いう情報を残す必要がある。
>>171
sizeof と同じような形式の演算子だと思えばいいんじゃない?
__は単に名前の一部。
0173デフォルトの名無しさん
2008/01/16(水) 12:18:350174デフォルトの名無しさん
2008/01/16(水) 12:25:520175デフォルトの名無しさん
2008/01/16(水) 12:42:41お返事有り難うございます。
>普通の名前と喧嘩しないように __ を付けるのは慣例
>慣例じゃなくて予約されているんだが
確かに__って普通の変数には付けないですからね。
どうも有り難うございました。
0176デフォルトの名無しさん
2008/01/16(水) 13:09:020177デフォルトの名無しさん
2008/01/16(水) 13:10:14スレ汚しすまん
0178デフォルトの名無しさん
2008/01/17(木) 01:56:01Aでコンパイル
Bで実行。
Bで、はいたコアダンプを冢ってgdbを使いたい場合は
Aでmakefile(自動生成)使ってまっす。
どうしたら、ディレクトリ構造とか再現してソース追っかけながらデバッグできますか?
makefileに答え有りますか?
0179デフォルトの名無しさん
2008/01/17(木) 02:03:30文が変だた
0180デフォルトの名無しさん
2008/01/17(木) 02:04:18Bでgdbserver走らせるのが一番楽じゃない?
0181デフォルトの名無しさん
2008/01/17(木) 02:08:28おとなの事情というか会社の事情で無理なんです
0182181
2008/01/17(木) 02:30:08Aにもgdbserverがデーモンのように動く必要ありますか?
Bにも同じgdbserverが必要ですよね?
Aで負荷高くなりそうですね
0183デフォルトの名無しさん
2008/01/17(木) 03:33:23あ、ごめん、コアの話しか。 そういう機能はgdbserverにはないね。
0184デフォルトの名無しさん
2008/01/17(木) 16:43:02__real__って何なんだ?
関数ではないしcomplex.hにも定義されていない。
gcc機能拡張ってのがよくまずわからない。
特殊な演算子なんですか?
0185デフォルトの名無しさん
2008/01/17(木) 16:50:58わからないなら自前の構造体定義すれば?
0186デフォルトの名無しさん
2008/01/17(木) 17:06:00何をわかる必要があるというんだろう。sizeof だってどこかのヘッダで
定義してあるわけじゃないけど使えるでしょ?
infoの説明はこれだけしかないけど、これで十分つかえるじゃないか。
> To extract the real part of a complex-valued expression EXP, write
> `__real__ EXP'. Likewise, use `__imag__' to extract the imaginary
> part.
0187デフォルトの名無しさん
2008/01/17(木) 17:06:53http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_4.html#SEC72
0188デフォルトの名無しさん
2008/01/23(水) 22:06:35GCC 4.3 もリリースモードへ突入
0189デフォルトの名無しさん
2008/01/26(土) 10:38:15それともprintf?
0190デフォルトの名無しさん
2008/01/26(土) 12:07:11printfの方が早いな
0191デフォルトの名無しさん
2008/01/26(土) 15:55:53ドコでも使えて簡単だから…
0192デフォルトの名無しさん
2008/01/26(土) 16:15:010193デフォルトの名無しさん
2008/01/26(土) 18:11:31debuggerのbreakpointsでprintfするんじゃなくて?
埋め込みなんてここ5年くらいやったことないわ。
0194デフォルトの名無しさん
2008/01/26(土) 19:12:440195デフォルトの名無しさん
2008/01/27(日) 01:52:180196デフォルトの名無しさん
2008/01/27(日) 02:09:060197デフォルトの名無しさん
2008/01/27(日) 02:13:550198デフォルトの名無しさん
2008/01/27(日) 02:22:410199デフォルトの名無しさん
2008/01/27(日) 13:40:490200デフォルトの名無しさん
2008/01/27(日) 13:43:31つか「デバッグトレース」って、デバッグ目的のトレース実行とか、
呼び出し順の出力のことじゃね?
0201デフォルトの名無しさん
2008/01/27(日) 14:10:360202デフォルトの名無しさん
2008/01/27(日) 15:47:470203デフォルトの名無しさん
2008/01/27(日) 18:41:45それなんですか?
0204デフォルトの名無しさん
2008/01/27(日) 18:44:020205デフォルトの名無しさん
2008/01/27(日) 18:44:420206デフォルトの名無しさん
2008/01/27(日) 18:44:580207デフォルトの名無しさん
2008/01/27(日) 18:47:270208デフォルトの名無しさん
2008/01/31(木) 08:26:24とりあえず「ミングダブリュー」って言うな。
0209デフォルトの名無しさん
2008/01/31(木) 08:33:440210デフォルトの名無しさん
2008/01/31(木) 14:46:43ミンジーダブリュー?
0211デフォルトの名無しさん
2008/01/31(木) 14:54:590212デフォルトの名無しさん
2008/01/31(木) 15:57:190213デフォルトの名無しさん
2008/01/31(木) 16:07:33>MinGWの規範となる発音は未だ決定されていないが、一般的には、
>"ming wee", "min gee double-u","ming double-u" or "min gnu"
>などのように発音されている。
いい加減なもんだよな…
0214デフォルトの名無しさん
2008/01/31(木) 18:00:390215デフォルトの名無しさん
2008/01/31(木) 18:10:400216デフォルトの名無しさん
2008/01/31(木) 19:56:540217デフォルトの名無しさん
2008/01/31(木) 20:09:070218デフォルトの名無しさん
2008/01/31(木) 22:15:040219デフォルトの名無しさん
2008/01/31(木) 22:19:040220デフォルトの名無しさん
2008/02/01(金) 00:27:13前は「みんぐぃん」て発音できたが今のは悩む・・・
0221デフォルトの名無しさん
2008/02/01(金) 00:55:58みにまりすとぬーふぉーういんどーず
と読むと?
0222デフォルトの名無しさん
2008/02/01(金) 00:57:210223デフォルトの名無しさん
2008/02/01(金) 06:29:390224デフォルトの名無しさん
2008/02/01(金) 07:54:170225デフォルトの名無しさん
2008/02/01(金) 09:09:52また、それを嘆くさま。
0226デフォルトの名無しさん
2008/02/01(金) 16:20:090227デフォルトの名無しさん
2008/02/01(金) 17:30:480228デフォルトの名無しさん
2008/02/01(金) 19:12:490229デフォルトの名無しさん
2008/02/02(土) 10:21:55GCC 4.2.3 has been released.
0230デフォルトの名無しさん
2008/02/03(日) 23:00:40GCC のソースコードを読み解いて理解したいと思っているのですが,
手始めに,あるいはコードを解読する際のガイドとして読んでおくべき
書籍あるいはサイトで,有用なものとしてはどんなものがありますでしょうか?
英語でもまったくかまいません.
一応,自分が読んで理解したい部分は
C++ コンパイラの字句・構文解析部 (フロントエンド部と呼ぶようですけれど) です.
0231デフォルトの名無しさん
2008/02/03(日) 23:47:28コンパイラを作りたいか?カスタマイズしたいのか?
0232デフォルトの名無しさん
2008/02/03(日) 23:54:560233230
2008/02/04(月) 01:04:00茨の道なのは重々承知のつもりでお聞きしています.
動機は最終的にはカスタマイズですけれど,
純粋に GCC の挙動を理解するだけでも得るものはあるかとは思っています.
0234デフォルトの名無しさん
2008/02/04(月) 01:55:12は今でも非推奨ですか?
0235デフォルトの名無しさん
2008/02/04(月) 02:00:16最終目標がGCCのカスタマイズなら、最初からGCCのソースを追えばいいかもね。
コンパイラの作り方を知りたいなら、ソースから読むのは学習効率が悪い。
ついでに、GCCはスパゲティだし大きいしで選択肢としても良くない。
もしまだ知らないなら、古典のdragon bookを読むとか、flex & bisonを触るとか
その辺からでは。最近の事情はわからんので、もっと手っ取り早い方法があるかも。
もしかして、GCCの最適化エンジンとかプロセッサ対応とかのバックエンド側を
いじりたいんではなく、フロントエンド側(入力言語)を拡張したいん?
GCCのドキュメントのどこかに一通り書いてありそうだが、漏れは知らんわ。すまん。
GENERICやGIMPLEを探ればいいんかな。
0236230
2008/02/04(月) 02:13:34非常に参考になる意見ありがとうございます.
>もしまだ知らないなら、古典のdragon bookを読むとか、flex & bisonを触るとか
dragon book は持ってはいますが気合入れて読んだことがなかったです.頑張って精読します.
flex & bison も玩具程度の弄り方しか試してなかったので,ちょっと本気で触ってみます.
>もしかして、GCCの最適化エンジンとかプロセッサ対応とかのバックエンド側を
>いじりたいんではなく、フロントエンド側(入力言語)を拡張したいん?
はい,バックエンド側には今のところほとんど興味がありません.
最終的な目標はフロントエンド側 (入力言語……といいますか C++) の拡張です.
ただ,これはあくまで最終的な目標として設定しているだけです.
0237デフォルトの名無しさん
2008/02/04(月) 02:42:19gccじゃなくて
0238デフォルトの名無しさん
2008/02/04(月) 02:56:440239デフォルトの名無しさん
2008/02/04(月) 11:11:06> なんかそういうプロジェクトをどこかで見たような
> gccじゃなくて
COINS?
0240デフォルトの名無しさん
2008/02/04(月) 11:24:340241デフォルトの名無しさん
2008/02/04(月) 13:41:11つまり、拡張仕様の入力から独自仕様の出力を得ている模様。
0242デフォルトの名無しさん
2008/02/04(月) 15:55:420243デフォルトの名無しさん
2008/02/04(月) 16:55:04まずyacc & bisonの勉強
次に http://gcc.gnu.org/readings.html , GCC-specific Literature
特にtoy example languageとRTL
C++拡張ということならOpenC++ (今はもう更新してないみたいだが)
0244230
2008/02/04(月) 20:11:15>>240
構文チェックなどについては GCC に実装されている部分を流用し,
interact させたいので,独立した preprocessing は今のところ考えていないです.
>>243
色々助言していただいて本当に助かります.
0245デフォルトの名無しさん
2008/02/05(火) 01:21:21wxWidetsっていうのを使ってプログラミングしてるんですが、
g++ -o hello2 hello2.o `wx-config --libs`
みたいにやると
/usr/lib/gcc/i486-linux-gnu/4.1.3/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
って言われてしまい、コンパイルできません。何がいかんのでしょう??
これだけだと分からないと言われそうなのですが、ソースがちょっと長いので・・
でも参考サイトの指示通りに書いた簡単なプログラムなので、ソースじゃなくて何か基本的な設定とかが間違ってるんじゃないかと思ってここに来ました。
OSはubuntu7.1.0です。他のプログラムならコンパイル出来ている状態です。(やはりソースが間違ってるんでしょうか・・)
どなたかアドバイス頂けると幸いです。
0246デフォルトの名無しさん
2008/02/05(火) 01:24:07http://alohakun.blog7.fc2.com/?all
ILogScriptがgcc4.xに対応してほしいぜ。
誰かやってくれよ。
0247デフォルトの名無しさん
2008/02/05(火) 01:27:100248デフォルトの名無しさん
2008/02/05(火) 01:31:180249245
2008/02/05(火) 04:35:12247さんありがとうございましたm(_ _)m
0250デフォルトの名無しさん
2008/02/05(火) 05:21:072月初旬の予定だそうだよ。
0251デフォルトの名無しさん
2008/02/05(火) 19:35:15未だにこれが直ってないのでr300の人はご注意を。
0252デフォルトの名無しさん
2008/02/06(水) 01:48:52またおまえかw
■ このスレッドは過去ログ倉庫に格納されています