GCCについて part8 ..
[2ch|▼Menu]
175:デフォルトの名無しさん
08/01/16 12:42:41
>>172,173,174
お返事有り難うございます。
>普通の名前と喧嘩しないように __ を付けるのは慣例
>慣例じゃなくて予約されているんだが
確かに__って普通の変数には付けないですからね。
どうも有り難うございました。

176:デフォルトの名無しさん
08/01/16 13:09:02
あ失礼,そうだった.<慣例

177:デフォルトの名無しさん
08/01/16 13:10:14
書き方おかしかった.<慣例,じゃなくて<予約
スレ汚しすまん

178:デフォルトの名無しさん
08/01/17 01:56:01
gdb+gccなんですがクロスコンパイルしてます。
Aでコンパイル
Bで実行。

Bで、はいたコアダンプを冢ってgdbを使いたい場合は
Aでmakefile(自動生成)使ってまっす。

どうしたら、ディレクトリ構造とか再現してソース追っかけながらデバッグできますか?
makefileに答え有りますか?

179:デフォルトの名無しさん
08/01/17 02:03:30
Bで、はいたコアダンプを冢ってgdbを使いたい場合はどうしたら良いですか?

文が変だた

180:デフォルトの名無しさん
08/01/17 02:04:18
>>178
Bでgdbserver走らせるのが一番楽じゃない?

181:デフォルトの名無しさん
08/01/17 02:08:28
>>180
おとなの事情というか会社の事情で無理なんです

182:181
08/01/17 02:30:08
少し確認ですが
Aにもgdbserverがデーモンのように動く必要ありますか?
Bにも同じgdbserverが必要ですよね?

Aで負荷高くなりそうですね

183:デフォルトの名無しさん
08/01/17 03:33:23
>>180
あ、ごめん、コアの話しか。 そういう機能はgdbserverにはないね。

184:デフォルトの名無しさん
08/01/17 16:43:02
だめだ。
__real__って何なんだ?
関数ではないしcomplex.hにも定義されていない。
gcc機能拡張ってのがよくまずわからない。
特殊な演算子なんですか?



185:デフォルトの名無しさん
08/01/17 16:50:58
>>184
わからないなら自前の構造体定義すれば?

186:デフォルトの名無しさん
08/01/17 17:06:00
>>184
何をわかる必要があるというんだろう。sizeof だってどこかのヘッダで
定義してあるわけじゃないけど使えるでしょ?

infoの説明はこれだけしかないけど、これで十分つかえるじゃないか。
> To extract the real part of a complex-valued expression EXP, write
> `__real__ EXP'. Likewise, use `__imag__' to extract the imaginary
> part.


187:デフォルトの名無しさん
08/01/17 17:06:53
>>184
URLリンク(www.asahi-net.or.jp)

188:デフォルトの名無しさん
08/01/23 22:06:35
URLリンク(gcc.gnu.org)
GCC 4.3 もリリースモードへ突入

189:デフォルトの名無しさん
08/01/26 10:38:15
みんなGDBを使ってデバッグしてるの?
それともprintf?

190:デフォルトの名無しさん
08/01/26 12:07:11
うかつに手を出せないところはInsight使ってるけど
printfの方が早いな

191:デフォルトの名無しさん
08/01/26 15:55:53
printfで場所を大まかに限定してソースとにらめっこ
ドコでも使えて簡単だから…

192:デフォルトの名無しさん
08/01/26 16:15:01
んで core 吐いたら gdb

193:デフォルトの名無しさん
08/01/26 18:11:31
printfってプログラム埋め込み?
debuggerのbreakpointsでprintfするんじゃなくて?
埋め込みなんてここ5年くらいやったことないわ。

194:デフォルトの名無しさん
08/01/26 19:12:44
デバッグトレースした方が便利な事もあるぜ。

195:デフォルトの名無しさん
08/01/27 01:52:18
デバッグトレースって何さ

196:デフォルトの名無しさん
08/01/27 02:09:06
デバッグ時のみ文字列出力。

197:デフォルトの名無しさん
08/01/27 02:13:55
社内用語乙。

198:デフォルトの名無しさん
08/01/27 02:22:41
デバッグトレース の検索結果 約 3,320 件

199:デフォルトの名無しさん
08/01/27 13:40:49
でもまー、ふつー「バックトレース」

200:デフォルトの名無しさん
08/01/27 13:43:31
違った。

つか「デバッグトレース」って、デバッグ目的のトレース実行とか、
呼び出し順の出力のことじゃね?

201:デフォルトの名無しさん
08/01/27 14:10:36
「光ファイバーチャネル」みたいなもんだな。

202:デフォルトの名無しさん
08/01/27 15:47:47
TRACE(_T("Debug trace\n"));

203:デフォルトの名無しさん
08/01/27 18:41:45
>>202
それなんですか?

204:デフォルトの名無しさん
08/01/27 18:44:02
MFC だな

205:デフォルトの名無しさん
08/01/27 18:44:42
MFCって、GCCで使えるんですか?

206:デフォルトの名無しさん
08/01/27 18:44:58
mingw で使えるんじゃね?

207:デフォルトの名無しさん
08/01/27 18:47:27
お前ら、4.3の話でもしようぜ

208:デフォルトの名無しさん
08/01/31 08:26:24


とりあえず「ミングダブリュー」って言うな。





209:デフォルトの名無しさん
08/01/31 08:33:44
明w

210:デフォルトの名無しさん
08/01/31 14:46:43
ミングダブリューさんじゅうにって読んでた
ミンジーダブリュー?

211:デフォルトの名無しさん
08/01/31 14:54:59
ミンジーダブリューって読んでた

212:デフォルトの名無しさん
08/01/31 15:57:19
ミングウだろ・・・常識的に考えて・・・

213:デフォルトの名無しさん
08/01/31 16:07:33
Wikipedia項目リンク
>MinGWの規範となる発音は未だ決定されていないが、一般的には、
>"ming wee", "min gee double-u","ming double-u" or "min gnu"
>などのように発音されている。
いい加減なもんだよな…

214:デフォルトの名無しさん
08/01/31 18:00:39
みんな MinGW の読み方には苦労してんのね

215:デフォルトの名無しさん
08/01/31 18:10:40
みんぐぅ

216:デフォルトの名無しさん
08/01/31 19:56:54
ミンジーダブリューだろ・・・常識的に考えて・・・

217:デフォルトの名無しさん
08/01/31 20:09:07
ゴールデンウィーク最小

218:デフォルトの名無しさん
08/01/31 22:15:04
みんぐうぃん

219:デフォルトの名無しさん
08/01/31 22:19:04
エムアイエヌジーダブリューだろ・・・常識的に考えて・・・

220:デフォルトの名無しさん
08/02/01 00:27:13
そういやいつからMingwinからMinGWになったん?
前は「みんぐぃん」て発音できたが今のは悩む・・・

221:デフォルトの名無しさん
08/02/01 00:55:58
つまり
みにまりすとぬーふぉーういんどーず
と読むと?

222:デフォルトの名無しさん
08/02/01 00:57:21
マゾ イン ゴールド ウォーターって読んでたわ・・・

223:デフォルトの名無しさん
08/02/01 06:29:39
MGW

224:デフォルトの名無しさん
08/02/01 07:54:17
みんぐw


225:デフォルトの名無しさん
08/02/01 09:09:52
ゴールデンウィークが最小限な事。
また、それを嘆くさま。

226:デフォルトの名無しさん
08/02/01 16:20:09
みんぐー

227:デフォルトの名無しさん
08/02/01 17:30:48
お前ら、4.3の話でもしようぜ

228:デフォルトの名無しさん
08/02/01 19:12:49
今年度中にリリースされる?

229:デフォルトの名無しさん
08/02/02 10:21:55
February 1, 2008
GCC 4.2.3 has been released.

230:デフォルトの名無しさん
08/02/03 23:00:40
すいません.質問させてください.

GCC のソースコードを読み解いて理解したいと思っているのですが,
手始めに,あるいはコードを解読する際のガイドとして読んでおくべき
書籍あるいはサイトで,有用なものとしてはどんなものがありますでしょうか?
英語でもまったくかまいません.
一応,自分が読んで理解したい部分は
C++ コンパイラの字句・構文解析部 (フロントエンド部と呼ぶようですけれど) です.

231:デフォルトの名無しさん
08/02/03 23:47:28
茨の道じゃろうて・・・

コンパイラを作りたいか?カスタマイズしたいのか?

232:デフォルトの名無しさん
08/02/03 23:54:56
GCCのすぱげっち読むよりはもうちょっとマシなものありそうだけど。

233:230
08/02/04 01:04:00
>>231
茨の道なのは重々承知のつもりでお聞きしています.
動機は最終的にはカスタマイズですけれど,
純粋に GCC の挙動を理解するだけでも得るものはあるかとは思っています.

234:デフォルトの名無しさん
08/02/04 01:55:12
#pragma once
は今でも非推奨ですか?

235:デフォルトの名無しさん
08/02/04 02:00:16
>>230,233
最終目標がGCCのカスタマイズなら、最初からGCCのソースを追えばいいかもね。

コンパイラの作り方を知りたいなら、ソースから読むのは学習効率が悪い。
ついでに、GCCはスパゲティだし大きいしで選択肢としても良くない。
もしまだ知らないなら、古典のdragon bookを読むとか、flex & bisonを触るとか
その辺からでは。最近の事情はわからんので、もっと手っ取り早い方法があるかも。

もしかして、GCCの最適化エンジンとかプロセッサ対応とかのバックエンド側を
いじりたいんではなく、フロントエンド側(入力言語)を拡張したいん?
GCCのドキュメントのどこかに一通り書いてありそうだが、漏れは知らんわ。すまん。
GENERICやGIMPLEを探ればいいんかな。


236:230
08/02/04 02:13:34
>>235
非常に参考になる意見ありがとうございます.

>もしまだ知らないなら、古典のdragon bookを読むとか、flex & bisonを触るとか
dragon book は持ってはいますが気合入れて読んだことがなかったです.頑張って精読します.
flex & bison も玩具程度の弄り方しか試してなかったので,ちょっと本気で触ってみます.

>もしかして、GCCの最適化エンジンとかプロセッサ対応とかのバックエンド側を
>いじりたいんではなく、フロントエンド側(入力言語)を拡張したいん?
はい,バックエンド側には今のところほとんど興味がありません.
最終的な目標はフロントエンド側 (入力言語……といいますか C++) の拡張です.
ただ,これはあくまで最終的な目標として設定しているだけです.

237:デフォルトの名無しさん
08/02/04 02:42:19
なんかそういうプロジェクトをどこかで見たような
gccじゃなくて

238:デフォルトの名無しさん
08/02/04 02:56:44
LLVM?

239:デフォルトの名無しさん
08/02/04 11:11:06
>>237
> なんかそういうプロジェクトをどこかで見たような
> gccじゃなくて

COINS?


240:デフォルトの名無しさん
08/02/04 11:24:34
入力言語をC++に変換するプリプリプロセッサを作るのが簡単のような

241:デフォルトの名無しさん
08/02/04 13:41:11
NVIDIAのCUDAのコンパイラ(nvcc)が内部でgcc使っているみたいだ。
つまり、拡張仕様の入力から独自仕様の出力を得ている模様。

242:デフォルトの名無しさん
08/02/04 15:55:42
Cell 用の spu-gcc もかなり弄ってるみたい

243:デフォルトの名無しさん
08/02/04 16:55:04
>>236
まずyacc & bisonの勉強
次に URLリンク(gcc.gnu.org) , GCC-specific Literature
特にtoy example languageとRTL
C++拡張ということならOpenC++ (今はもう更新してないみたいだが)

244:230
08/02/04 20:11:15
GCC を弄る先例として色々見る価値のあるプロジェクトはあるみたいですね.

>>240
構文チェックなどについては GCC に実装されている部分を流用し,
interact させたいので,独立した preprocessing は今のところ考えていないです.

>>243
色々助言していただいて本当に助かります.

245:デフォルトの名無しさん
08/02/05 01:21:21
質問させてください。
wxWidetsっていうのを使ってプログラミングしてるんですが、

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です。他のプログラムならコンパイル出来ている状態です。(やはりソースが間違ってるんでしょうか・・)
どなたかアドバイス頂けると幸いです。


246:デフォルトの名無しさん
08/02/05 01:24:07
gccのフロントエンドはここのブログが参考になる。
URLリンク(alohakun.blog7.fc2.com)

ILogScriptがgcc4.xに対応してほしいぜ。
誰かやってくれよ。

247:デフォルトの名無しさん
08/02/05 01:27:10
>undefined reference to `main'

248:デフォルトの名無しさん
08/02/05 01:31:18
wo神ならなんとかしてくれる

249:245
08/02/05 04:35:12
すいません解決しました。やはりただのソースの問題でした。
247さんありがとうございましたm(_ _)m

250:デフォルトの名無しさん
08/02/05 05:21:07
>>228
2月初旬の予定だそうだよ。

251:デフォルトの名無しさん
08/02/05 19:35:15
URLリンク(gcc.gnu.org)
未だにこれが直ってないのでr300の人はご注意を。

252:デフォルトの名無しさん
08/02/06 01:48:52
>>245
またおまえかw

253:デフォルトの名無しさん
08/02/06 07:53:05
r300って、MIPSの何かかと思ってしまった。。R800でもいいけど。

254:デフォルトの名無しさん
08/02/06 09:43:58
>>253
> R800でもいいけど。

懐かしいね

255:デフォルトの名無しさん
08/02/06 12:29:30
>>252
なんか最近、wxの・・・更に言うならwx-configの話題をよく見かけるな
どこかで流行ってるのかね

256:デフォルトの名無しさん
08/02/09 23:35:10
GCCで、どこからも参照されていない関数を除去するオプションを探しています。
VC++でいうとプロパティ -> リンカ -> 参照の「参照されないデータを除去する」です。
GCCのバージョンは4.2.2で、組み込み向けのクロス環境です。

257:デフォルトの名無しさん
08/02/10 00:08:40
それはgccじゃなくてリンカldの仕事。VC++でもリンカliの仕事。
んで、--as-neededがそれなのかな?よく知らないいけど。
gccから渡すには、-Wl,LFLAGSのようだけど。

258:デフォルトの名無しさん
08/02/10 00:11:14
スタティックリンクしてるのかな?

正直スタティックリンクまわりは普段使ってないのでどうにも...

259:デフォルトの名無しさん
08/02/10 01:16:30
-ffunction-sections  あたりでggr


260:259
08/02/10 01:30:59
>>256
関数だけじゃなく、グローバル変数も除去したいなら、-fdata-sectionsも要るな。
「データ」って書いてあるので一応補足。

>>257
それは、ライブラリを必要に応じてリンクしろというオプションだから今は関係内ね。
ldに渡すのは--gc-sectionsだったかな。


261:256
08/02/10 01:45:00
>>260
-ffunction-sections -Wl,--gc-sectionsを試してみましたが、目立った効果は無いみたいです。
COFFなのが原因かもしれないです。

262:デフォルトの名無しさん
08/02/10 01:50:37
COFFか。。それはよくわかんないな。
ELFのstatic linkでしか試したことが無い。

263:256
08/02/10 02:12:19
>>262
とりあえず地道に小分けにして対応することにします。
ありがとうございました。

264:デフォルトの名無しさん
08/02/10 09:33:30
今更なんだけど、gccって、せっかく一旦yaccだかbisonだかを使う事にしたのに
また手書きのパーザに戻したらしいよね。なんでなんだろ?
普通にパーザジェネレータ使ってた方が、何かと便利だろうに。

265:デフォルトの名無しさん
08/02/10 09:48:34
GCC全体じゃなくてC++のフロントエンドだけ。
C++がLALRでパースするのはキツい変態言語ってだけでは。

266:デフォルトの名無しさん
08/02/10 10:25:44
URLリンク(citeseer.ist.psu.edu)

267:264
08/02/10 13:25:54
サンクス。
なんか下のpdfの冒頭、凄いこと書いてるな。自然言語パーザの方がふさわしいって?
いや辞書片手に読んでるだけだから、誤読かもわからんけど。

まあ上手く動いてるなら、いいか。。。
できるだけ、へたな努力はしないで欲しいんだけどな。。。
つか、パーザジェネレータ使う方が「へたな努力」になってしまうって事?

・・・あれ?そうすると、「へたな努力」って何なんだっけ?
ちょっと電波板で独り言つぶやいてくる。

268:デフォルトの名無しさん
08/02/10 13:40:19
>自然言語解析の分野で非常によく知られている富田法(GLR 法)が、
>従来のアプローチよりも C++ のパースに向いている事を発見した。

って書いてあるね。

GLR法
Wikipedia項目リンク

269:デフォルトの名無しさん
08/02/10 13:42:00
bison では GLR をサポートしているらしいが、
それでも bison は使えないんだろうか?

270:デフォルトの名無しさん
08/02/10 15:38:05
あんまり変体過ぎて、パーザジェネレータの分野が活発になっているという…

271:デフォルトの名無しさん
08/02/10 15:55:34
>>263
馬鹿げた方法だけど C++ なら全部ヘッダに inline で書く手もw


272:デフォルトの名無しさん
08/02/10 18:27:31
>>268
C++って、自然言語に匹敵しかねないほど文法が複雑ってことか……

273:デフォルトの名無しさん
08/02/11 01:16:46
Walter タンが D を作りたいと思った気持ちが分かるな。

274:ストラウストラップ
08/02/11 01:21:57
ハゲって言った奴は誰だ!

275:デフォルトの名無しさん
08/02/11 05:16:32
びよ〜ん

びよんびよ〜ん

276:デフォルトの名無しさん
08/02/11 07:05:28
しゅと・ら・うすらっぷ

277:デフォルトの名無しさん
08/02/11 10:33:40
すっぽすっぽ

278:デフォルトの名無しさん
08/02/19 05:32:13
来週にはRCビルドが始まるそうな。arch=core2にwktk

279:デフォルトの名無しさん
08/02/19 23:01:13
てかいまも使えるよ

280:デフォルトの名無しさん
08/02/21 09:49:07
llvmだいぶ速くなったものもあるみたいだけど、どうですか?

281:デフォルトの名無しさん
08/02/21 10:13:14
どうですか(笑)

282:デフォルトの名無しさん
08/02/26 01:44:12
gccをFPGAで作った自作のCPUに対応させたいんだけど、
binutilをいじればいいの?

何か参考になる書籍があれば教えて。

283:デフォルトの名無しさん
08/02/26 06:22:39
まずはgccintだろう。

284:デフォルトの名無しさん
08/02/26 13:44:23
>>283
ありがとう

285:デフォルトの名無しさん
08/02/29 02:16:52
4.4forkしますた

286:デフォルトの名無しさん
08/03/02 00:53:35
gdbについて聞きたいんですが、
fork()のとき、どっちのプロセスも追っていきたい
ときってどうすればいいんでしょうか?

ただしソースコードはいじれないとします。


287:デフォルトの名無しさん
08/03/02 03:01:44
もういっこgdb起動してアタッチ?

288:デフォルトの名無しさん
08/03/05 03:54:21
GCCのマニュアルを読んでみると、-O1は -fauto-inc-decから-funit-at-a-timeまでの24つのフラグを有効にするとあるので
bzip2を-O1でコンパイルしたバイナリと、-fauto-inc-dec以下24つのフラグでコンパイルしたバイナリとで、
同一のファイルを圧縮するのにかかる時間を比較したところ、同等の結果が得られませんでした。
-fauto-inc-dec以下24つのフラグでコンパイルしたバイナリは、何も最適化フラグを与えずにコンパイルしたバイナリと
同程度の結果になりました。どうしてこの様な結果になるのでしょうか。
URLリンク(gcc.gnu.org)



289:デフォルトの名無しさん
08/03/05 05:51:10
>>288
「-Oは以下の最適化フラグを有効にする」と書いてあるけど、それしか
しないとは書いてない。
gccのソースを見ると、「最適化レベルが1以上なら〜」というコードが
けっこう見付かるはず。


290:デフォルトの名無しさん
08/03/05 11:59:59
>>288
各最適化オプション -fxxx は -O が前提となってたりする。
だから -O 指定せずに -fxxx 指定して効果がなくてもそんなもの。

最適化フラグ指定でんでんはGCCのソース嫁


でんでん…

291:デフォルトの名無しさん
08/03/05 12:02:04
で...云々

292:デフォルトの名無しさん
08/03/05 13:28:35
まさか、「云々」を「でんでん」と読んでたりしないだろうな。

293:デフォルトの名無しさん
08/03/05 13:32:22
>>292 本当ならガイシュツ並に痛い気がする。


294:デフォルトの名無しさん
08/03/05 13:46:50
ここは痛いインターネッツでつね


295:デフォルトの名無しさん
08/03/05 14:48:23
「ガイシュツ」と同じくネタのつもりなんだろうけど、わざわざ読みに
くく書くのは個人的には嫌いだ。


296:デフォルトの名無しさん
08/03/05 22:58:23
何年も前のネタでも反応が初々しい。このスレの住人は可愛い

297:デフォルトの名無しさん
08/03/06 01:59:27
>>288
実はディスクの方が律速で差が出なかったとか。

というかどうやって計って、どういう結果になったのか
書いてもらわんと難しいと思うわけで。



298:デフォルトの名無しさん
08/03/06 11:22:03
4.3.0キタ━━━(゚∀゚)━━━ !!!!!
fURLリンク(gcc.gnu.org)

299:デフォルトの名無しさん
08/03/06 14:35:38
mirror貼れ
fURLリンク(ftp.dti.ad.jp)

300:デフォルトの名無しさん
08/03/06 15:12:45
GNUをミラーしてるお近くのftpサーバへどうぞ、でいいんじゃないのか。

301:デフォルトの名無しさん
08/03/06 16:07:59
snapshots見てたから気づかなかったぜ

302:デフォルトの名無しさん
08/03/06 22:25:45
4.3の一番の売りは、主な数学関数をコンパイル時に展開してより最適化してくれるってことでOK?

303:デフォルトの名無しさん
08/03/07 13:26:47
-march=core2 -mtune=core2でしょ

304:デフォルトの名無しさん
08/03/07 16:13:38
geodeも忘れるな

305:デフォルトの名無しさん
08/03/08 05:30:08
で、4.1より早いの?
じゃなきゃ糞だが

306:デフォルトの名無しさん
08/03/08 06:24:09
gcc-4.3のバイナリ実行速度は、integerについてはgcc-4.1よりも速いし、バグの数もgcc-4.1よりも少ない。

307:デフォルトの名無しさん
08/03/08 11:33:42
>>306
4.1から4.3で何が良くなったのか簡潔に頼む。

308:デフォルトの名無しさん
08/03/08 11:39:08
ggr (3バイト)

309:デフォルトの名無しさん
08/03/08 19:44:39
fate見ると4.3って4.1に比べて遅くなってるような。
4.1.2 URLリンク(fate.multimedia.cx)
4.2.3 URLリンク(fate.multimedia.cx)
gcc svn 133010, built 2008-03-07 URLリンク(fate.multimedia.cx)

310:デフォルトの名無しさん
08/03/08 21:56:34
以前にベンチをnbenchとかbzip2とかで取ってみて比較した印象だと整数演算に関しては4.1より4.2の方が明らかに良いと
思っていて、最適化フラグが-O2の場合は4.2より4.3の方が若干良いという印象を持っていたのでそう書いたのでけど、
実は-O3の場合は事情が違って、4.2の方が4.3より良い結果になると思っています。つまり、
gcc-4.2-O2<gcc-4.3-O2<gcc-4.3-O3<gcc-4.2-O3
の順に性能が良くなると思っています。fateというベンチはstdout textを見ると-O3でコンパイルされているので
4.2の方が4.3より良い結果になるというのは順当だと思います。

311:デフォルトの名無しさん
08/03/08 22:20:14
C++ヲタだから、あんまり速度比較には興味ないんだけど、
4.3はforward propagationが大幅に書き換えられているから、
4.2のの頃の結果から4.3の振る舞いを推測するのは危険だぞ。

312:デフォルトの名無しさん
08/03/09 13:19:28
4.3.0今試してみたけどやっぱり4.1.2より遅いバイナリ吐いた
あくまで自分が使うプログラムでってことだけど

313:デフォルトの名無しさん
08/03/09 18:47:18
速い遅い以前に挙動が変わっちゃって今トレース中だよ・・・

314:デフォルトの名無しさん
08/03/09 23:34:14
それは十中八九 GCC のせいじゃない。
まあ、警告が不十分だった事に起因してる点があれば
30% 程度は GCC にも責任があるかもしれないが。

315:デフォルトの名無しさん
08/03/09 23:35:17
>>307
URLリンク(gcc.gnu.org)
Status of Experimental C++0x Support in GCC 4.3

Rvalue references N2118 Yes
Rvalue references for *this N2439 No
Variadic templates N2242 Yes
Static assertions N1720 Yes
Declared type of an expression N2343 Yes
Right angle brackets N1757 Yes
Default template arguments for function templates DR226 Yes
Extern templates N1987 Yes

C99 Features in C++0x
__func__ predefined identifier N2340 Yes
C99 preprocessor N1653 Yes
long long N1811 Yes

もちろんg++起動オプションでオンにしたときだけ。
URLリンク(gcc.gnu.org)

316:デフォルトの名無しさん
08/03/10 00:37:24
>>314
まさかgccはlintにするために作ってるわけじゃあるまいに。なんだその30%て。

317:デフォルトの名無しさん
08/03/10 19:19:11
Linuxで最近よく自分でアプリやカーネルをmake installします。gccの最適化フラグをつけないとつけた時に
比べてやはり遅いんだなってのは体感しました。所がアプリによりつけたフラグによっては動きが悪くなる
ってのも体感。

なので自分はソースが読めないのでgcc4.2シリーズの-march=native -O2のみにして全部これでやることに
しました。それなりに快適に動いてます。

少し前からgcc4.3の最適化は4.2よりいいと書いてある記事をみて開発版の4.3を入れたけど
なんか動きがかなり違う。コンパイルが出来ない(一切フラグをつけなくても)物も出てきた。

それどころかある設定をしないとカーネルでさえコンパイル出来ないんですね・・・・
ググってカーネルのmakeファイルに設定を追加して出来上がった物も動きが悪いです・・・
やはり今回の正式リリースもカーネルとかそのままコンパイル出来ないんでしょうか?

まあ、それは対策が解るからいいものの、使った感じちょっとソースが読めないような自分が使う物ではないな
と感じたです。コンパイルエラーが出たのをネットでググる時間が(TT)

318:デフォルトの名無しさん
08/03/10 20:08:32
ソース読めない、情報拾うのが涙目、って状態で開発版を入れる神経が理解できない。

319:デフォルトの名無しさん
08/03/10 20:14:00
>>318
じゃあ正式リリース版のgcc4.3.0では何もいじらなくてカーネルコンパイルくらいは平気で出来るの?
4.2シリーズは開発版だろうがまるで神経使わなかったけど。

320:デフォルトの名無しさん
08/03/10 20:15:00
じゃあ(笑)

321:デフォルトの名無しさん
08/03/10 20:17:07
>>320
答えられないような人は黙っててよww

322:デフォルトの名無しさん
08/03/10 20:28:23
>>319
開発版を入れる神経を疑いはするが、4.3が安定しているかどうかは知らない。
私ゃ態々カーネルをコンパイルし直すほど暇じゃないんでね。

323:デフォルトの名無しさん
08/03/10 20:39:37
そうそう体感できるものでもないだろ
0.3秒かかってたのが0.27秒とかになったとしても

324:デフォルトの名無しさん
08/03/10 21:15:34
どうせGentooユーザなんだろうなぁ

325:デフォルトの名無しさん
08/03/10 22:08:50
春厨だよ

326:デフォルトの名無しさん
08/03/10 22:27:47
>>322
安定とかの問題以前でgccサイドとカーネルサイドの意見が違っててどっちも直さないってのが
ある筈なんだけど・・・

gcc4.3、カーネルと聞いて思い浮かばないようならもう話はいいですww

327:デフォルトの名無しさん
08/03/10 23:07:27
「ある筈なんだけど」っていう程度の人は、
リリースされたばかりのコンパイラを使わない方がいいと思うよ

> やはり今回の正式リリースもカーネルとかそのままコンパイル出来ないんでしょうか?

あなたにはよく分からないことだから。

328:デフォルトの名無しさん
08/03/11 00:04:11
すいませんちょっとお尋ねしたいのですが、
コンパイル時に二つのオプションを使うことってできるのでしょうか?
例えば、若干スレ違い臭いのですが、質問させてください。

例えば、
`wx-config --cppflags` と `pkg-config --cflags gtk+-2.0`
を同時に使いたいのです。

同時に使えるとしたらどのように書けばいいのでしょうか。
どなたかご教示頂けると幸いです。

329:328
08/03/11 00:05:15
3行目コピペミスなので無視してください・・

330:デフォルトの名無しさん
08/03/11 00:10:10
別スレでレスがつかなかったからこっちで・・・とか
そのくらいの経緯は書いて欲しいな。
というか、向こうでレスついたぞ。

331:329
08/03/11 00:16:00
>330
すいません、そういうもんなのですか。以後気をつけます。
レスついたみたいですね。ありがとうございましたm(_ _)m

332:デフォルトの名無しさん
08/03/11 01:48:36
ん?GTK+スレでもwxスレでもないどこかなのかな?ま、いいか

333:デフォルトの名無しさん
08/03/11 02:30:21
4.3でカーネルがビルド出来ないというのは、これです。
URLリンク(gcc.gnu.org)

334:デフォルトの名無しさん
08/03/11 02:33:55
カーネルに限らず、O2レベルでもミスコンパイルはよくあるから別に驚く話でもないが。
GCCコミッテーに文句つけて今の版のバグフィックスをしろよ、クソハゲドモと外人に文句垂れてくるんなら
俺は得に気に留めないよ。

335:デフォルトの名無しさん
08/03/11 02:38:16
方向の違うこういうのもあるから、素人さんにはお勧めしない。
URLリンク(git.kernel.org)

正直、コンパイル猿になるよりもずっと有意義なことがいくらでもあります。
何か一つターゲットを絞って深く追ってみるのならいいけどね。

336:sage
08/03/13 10:12:58
int result;
__asm__ (
"imull %%edx\n\t"
"idivl %3\n\t"
: "=a" (result) /* out */
: "a" (m1), "d" (m2), "g" (d) /* in */
: "ax", "dx" /* mod */
);
return result;
}
でコンパイルするとcan't find a register in class ‘AREG’ while reloading ‘asm’とのエラーが表示され、コンパイルできません。
どのように改善したら良いでしょうか。

337:デフォルトの名無しさん
08/03/13 10:35:04
なんか付帯情報が変な気がするんだけど、
何を参考にしました?

338:sage
08/03/13 10:38:28
koulesっていうゲームのソースをmakeしたところエラーが発生したので
ソースを見てみたらわけわからんという状態です。


339:デフォルトの名無しさん
08/03/13 12:18:37
氏ね

340:デフォルトの名無しさん
08/03/13 12:44:18
gcc3 と 4 で変わったっけ?

341:デフォルトの名無しさん
08/03/13 23:18:52
g77 死亡

342:デフォルトの名無しさん
08/04/06 00:24:12
gccのオプションで-ggdb3,-gや-O0, -O2のようにどちらかしか採用されないようなオプションを
同時に渡したときどちらが採用されるのでしょうか?

gcc -ggdb3 -O0 -g -O2 -c src.c -o src.o
と実行したときsrc.oは「-ggdb3 -O0」それとも「-g -O2」?

343:デフォルトの名無しさん
08/04/06 08:01:45
引数の解釈する順番?

344:デフォルトの名無しさん
08/04/06 11:48:45
>>342
You can mix options and other arguments. For the most part, the order
you use doesn't matter. Order does matter when you use several options
of the same kind; for example, if you specify `-L' more than once, the
directories are searched in the order specified.

機能が被る場合にどうなるかは明記されてないが
理解の一助にはなるかな?

345:デフォルトの名無しさん
08/04/06 12:36:30
-Qとかつければ、どう解釈されてたか見れたような?

346:デフォルトの名無しさん
08/04/06 16:25:44
Windowsと違って、UNIXだとsleep(0)ってやっても効果ないの?


347:デフォルトの名無しさん
08/04/06 16:44:17
Windowsだとどんな効果があるの?

348:デフォルトの名無しさん
08/04/06 17:19:21
>>346
Windowsでの効果は知らないけれど、Linuxの場合はタスクスイッチングを強制させるのに使える。
要は「最低0秒」止まるので、他に処理するべきプロセスがあればそちらを実行することになる。
# 逆に言えば、最悪何秒も止まりっぱなしになるかもしれない。

349:デフォルトの名無しさん
08/04/06 20:31:52
pthread_yield


350:デフォルトの名無しさん
08/04/06 20:52:21
タスクスイッチというかカーネルへの制御の移行ね。
システムコールからそのまま戻るにしても既に送られたシグナルがあれば
戻る直前でシグナルハンドラが走る。

あとUNIXによってはsleepはプロセスタイマを使う可能性があるらしいので
ユーザプログラム側でタイマを使う場合は注意が必要かも。

351:デフォルトの名無しさん
08/04/07 11:58:14
>>349
それはスレッドだから、>>348の言っていることとは違う。
pthread実装はカーネル・スレッドばかりじゃないから。

352:デフォルトの名無しさん
08/04/07 15:23:45
インクルードパスとライブラリのパスを環境変数で設定する方法を教えてください

353:デフォルトの名無しさん
08/04/07 15:29:27
今時、その手法ははやらないんじゃないの?

354:デフォルトの名無しさん
08/04/07 15:33:12
CPATH
LIBRARY_PATH
とか?

355:デフォルトの名無しさん
08/04/07 17:50:52
INCLUDES
LD_LIBRARY_PATH

356:デフォルトの名無しさん
08/04/08 13:10:13
g++ で libfoo1.a と libfoo2.a をリンクしているのですが、
この2つのライブラリが相互に依存しているので、
undefined エラーになります。

libfoo1.a libfoo2.a のソースをいじることなく、
うまくリンクすることはできないでしょうか?


357:デフォルトの名無しさん
08/04/08 13:17:09
libfoo1.a内のどのオブジェクトがlibfoo2.a内のどのオブジェクトに依
存しているかなど、もうちょっと詳しい情報が欲しいけど、とりあえず
gcc .... -lfoo1 -lfoo2 -lfoo1
のような感じでできへん?

libfoo1.aとlibfoo2.aをバラして1つのlibfoo.aにしてしまうとかも。



358:デフォルトの名無しさん
08/04/08 13:44:25
>>356
URLリンク(sourceware.org)

359:デフォルトの名無しさん
08/04/09 13:51:18
LIBRARY_PATHとLD_LIBRARY_PATHの違いは何ですか?


360:デフォルトの名無しさん
08/04/09 13:53:28
ldかld.soか
要するにコンパイル(リンク)時か、実行時か。

361:デフォルトの名無しさん
08/04/09 16:39:29
>>352
どうやってやるの?
IとかLとかでいちいち指定するの?
それともmake?小さいプログラムではわざわざmakeなど使いたくないのだが。

362:デフォルトの名無しさん
08/04/09 16:41:32
スクリプトでやればいいじゃん

363:デフォルトの名無しさん
08/04/09 17:14:24
>>361
CFLAGS=-I/usr/include/foo
LDFLAGS=-L/usr/include/foo -lfoo

default: foo

これだけ。foo.cから実行ファイルfooを作る。

364:デフォルトの名無しさん
08/04/10 10:28:43
/usr/lib/gcc/target/version/includeのようなgcc付属のヘッダのある
ディレクトリを取得する方法はありますか?
-nostdincを指定してるソースからstdarg.h等を使いたいのです。

365:デフォルトの名無しさん
08/04/10 11:13:22
gcc -print-search-dirs


366:デフォルトの名無しさん
08/04/10 16:07:17
nm libhoge.a | grep hageとしたら
00001ffb t hageとでるのに
int main() {
 return hage();
}
のようにhageを呼び出してるプログラムのリンクが失敗するのですが
どのような原因が考えられますでしょうか?

gcc -g -O0 main.c  -o huga -L. -lhoge
main.c:2: undefined reference to `hage`
collect2: ld はステータス 1 で終了しました

367:デフォルトの名無しさん
08/04/10 16:19:41
? gcc -v -g -O0 main.c -o huga -L. -lhoge

368:デフォルトの名無しさん
08/04/10 17:02:27
? gcc -v -g -O0 main.c -o huga -L. -lhoge -Wl,--verbose

369:デフォルトの名無しさん
08/04/10 17:43:36
CとFORTRANでは最適化の方法が違うの?

370:デフォルトの名無しさん
08/04/10 22:06:32
>>366
t ってことはローカルシンボルじゃん

371:デフォルトの名無しさん
08/04/14 20:54:13
Cygwin上でGCCのC,C++のクロス環境を作ってます。
newlibと組み合わせてビルドはうまくいってるんですが、
libstdc++のgchファイルがかなりサイズを食っていて扱いづらいです。
実際には、C++の言語本体の機能だけ利用できれば十分です。
configure時にうまく無効にする方法などあれば教えてください。

372:デフォルトの名無しさん
08/04/15 13:19:53
libstdc++で
configure --help
やってみたら、何か出るかも?

373:デフォルトの名無しさん
08/04/15 13:22:43
GCCに、関数呼び出しとリターンを表示させたり記録させたりする
オプションってありましたっけ?
なんかあったような気もするけど、ぐぐってもヒットせんかった。

374:デフォルトの名無しさん
08/04/15 13:25:40
実行時だとみれるような機能があったような?

375:デフォルトの名無しさん
08/04/15 13:35:46
>>373
記録させることはできないが、-finstrument-functions で hook させることはできる。

ググればいろいろ出てくるが、
URLリンク(www.ibm.com)
ここがわかりやすいな。

376:デフォルトの名無しさん
08/04/15 13:56:20
>>375
なにこれー!今日ほど2chが役に立った日はないわ。ちょーさんくすこ。

377:デフォルトの名無しさん
08/04/15 14:23:08
>>371
--enable-libstdcxx-pch build pre-compiled libstdc++ headers
[default=$is_hosted]

378:371
08/04/15 21:11:44
>>372,377
ありがとうございます。
--disable-libstdcxx-pchを入れて試してみます。

379:デフォルトの名無しさん
08/04/24 20:53:48
gccで、クロージャとは言わないまでも、
ユーザーが作った関数へ、後から動的に値を埋め込む方法はありませんか?
言語処理系のコールバックの実装で、
その関数が呼び出された時に、その値を参照したいのです。
グローバル変数や、アセンブラを使えば作れるのですが、
できれば使わずに済ませたいので。


380:デフォルトの名無しさん
08/04/24 21:00:19
任意のパラメータを受け取れる void* 型の引数を作るといいよ。

381:デフォルトの名無しさん
08/04/24 21:00:26
つ 関数へのポインタ

382:デフォルトの名無しさん
08/04/24 21:28:31
#include </dev/tty>

383:デフォルトの名無しさん
08/04/24 21:30:04
>>380-381
いやそうじゃなくて。
言い方を変えれば、関数とユーザー値を組み合わせて
新しい関数を作れるかって事です。
その新しい関数は、呼び出し時に
なんらかの方法でユーザー値を受け取れる事。

384:デフォルトの名無しさん
08/04/24 21:31:21
また、誰が呼び出すかは判らないので、
ユーザー値をその関数の引数に入れる事はできません。

385:デフォルトの名無しさん
08/04/24 21:39:56
g() { return closure_ref(0) + 1; }
f(pg) { return ((int (*)())pg)(); }
main() {
printf("%d\n", f(make_closure(g, 1)));
return 0;
}

この場合2が表示される。
make_closureとclosure_refを作れるか

fはstdlib.hのbsearchやqsortのように、
任意のライブラリの可能性もある。
(当然gはその型に合った関数型になる)


386:デフォルトの名無しさん
08/04/24 21:55:20
C++ならできるからg++使えってのはあり?

#include <boost/tr1/functional.hpp>
#include <boost/utility/result_of.hpp>
#include <cstdio>

template<typename T>
T g(T x)
{
  return x + 1;
}

template<typename T>
typename boost::result_of<T ()>::type
f(T g)
{
  return g();
}

int main()
{
  std::printf("%d\n", f(std::tr1::bind(g<int>, 1)));
}


387:デフォルトの名無しさん
08/04/24 22:02:29
>>386
C++の型拡張による物は呼び出し側(f相当)を限定してしまうので不可です。
あくまで汎用的なコールバックに使える事が前提なので。
一応nested functionで限定的にできる事は判っています。


388:デフォルトの名無しさん
08/04/24 22:08:04
>>387
その限定というのは、boost::function (もしくはstd::tr1::function)で何とかなるものではない?

389:デフォルトの名無しさん
08/04/24 22:16:17
>>388
boost::functionでできそうです。
ありがとうございます。

390:デフォルトの名無しさん
08/04/25 13:47:24
GCC4で、できなくなった気もするが
URLリンク(gcc.gnu.org)

391:デフォルトの名無しさん
08/05/03 12:17:28
Apache C++ Standard Library 4.2.1 released
URLリンク(mail-archives.apache.org)

392:デフォルトの名無しさん
08/05/20 07:48:27
URLリンク(gcc.gnu.org)
> GCC 4.2.4 is now available to download from gcc.gnu.org and ftp.gnu.org

393:デフォルトの名無しさん
08/05/24 14:54:03
たまに聞く、GCCは4シリーズより3.4とかの方がアプリなどの動きが早いって聞いて入れてみた。
コンパイルが出来ない物が出てきたから一時は諦めたけど、最近C++関連は(sijc,glibmm,cairomm,gtkmmなど)
全部同じコンパイラーじゃないとうまく動かないというのを知ってその辺全部3.4でコンパイル。

使用してみた感じ、コンパイル(-O2のみ)した各アプリの動きが良い。カーネル2.6.25もGCC3.4でコンパイル。
立ち上がりとかも早くなりました。dmesgの左に出る起動時の細かい時間とかも早くなっているのが解る。

GCCの4シリーズなどは、その新機能を生かすソースを書いてあげないとあまり意味が無いんでしょうか・・・
快適なのでとりあえずしばらく3.4メインにしようかな。

394:デフォルトの名無しさん
08/05/24 16:53:22
>>393
気のせいですよ。

395:デフォルトの名無しさん
08/05/24 17:50:22
このスレ見ている人がいるなんてwww 全米も感動(TT)

396:デフォルトの名無しさん
08/05/24 18:26:30
違いが気になるなら、アセンブリ出力を見比べてみればいい。

397:デフォルトの名無しさん
08/05/24 21:59:58
アセンブリなんか見るよりアプリケーションベンチ取ればいい。
アセンブリの差はCPU側の処理方法によって優劣付けにくいから。

それにしてもgcc替えてまでやっての感想が「気がします」とは
だんだんオーヲタみたいになってきたな。電源ケーブルを純銅にしたら
電気の流れが速くなってキビキビ動作になりました!と変わらん。

398:デフォルトの名無しさん
08/05/24 22:49:16
>>393
気になるなら調べてください。
調べる気がないなら気にしない方がいいです。

399:デフォルトの名無しさん
08/05/24 23:14:13
>>393
自前コンパイルなら機種依存オプションまで付けろ、と。

400:デフォルトの名無しさん
08/05/24 23:30:40
>>397
電源ケーブルは材質よりインピーダンスとアース極性チェックが大事。
信号線の方は俺は純銀ケーブルにしてる。無酸素銅とどっちが良いかはなんとも言えんが。

401:デフォルトの名無しさん
08/05/24 23:38:43
>>400
うん。そういう風にわかってこだわるのはいいんだ。
>>393は試したって-O2だけかよ、って小一時間問い詰めたい。

実際のところ、カーネルとかマルチメディア系とかはコンパイラの癖にまで
依存したギリギリのチューニングが施されている場合があるから、
コンパイラの能力を評価するにはフェアじゃない。

402:デフォルトの名無しさん
08/05/25 12:02:12
URLリンク(x264dev.multimedia.cx)

403:デフォルトの名無しさん
08/05/28 22:45:06
そういや昔見たのは、
URLリンク(groups.google.com)
gccは2.95が最速、あとは遅くなるだけだぜ、みたいな話

404:デフォルトの名無しさん
08/06/01 03:00:30
毎回gdb立ち上げて特定のメソッドにブレーク張ってとかの作業を
自動化してくれる方法はないでしょうか?

405:デフォルトの名無しさん
08/06/01 03:07:00
>>404
gdbの起動時にスクリプトを実行する機能があるよ。
詳細はmanでも読んで。

406:404
08/06/01 03:14:36
>>405さんありがとうございます。
.gdbinitというファイルをカレントディレクトリに用意して
以下のように書いてうまくいきました。

exec-file ./test.exe
symbol-file ./test.exe
r
b main

407:デフォルトの名無しさん
08/06/02 02:34:00
gccでコンパイルするときに
コンパイルしたソースファイルの名前を、
ディレクトリも含んだ状態でオブジェクトファイルに格納する
らしいのですが、
どこに書かれているのでしょうか?

408:デフォルトの名無しさん
08/06/02 07:35:54
$ nm -a foo.o

409:デフォルトの名無しさん
08/06/07 02:34:16
June 6, 2008
GCC 4.3.1 has been released.

410:デフォルトの名無しさん
08/06/09 14:32:10
GCCで音階のプログラムを組もうとおもっています。
波数とパルスの詳細が知りたいので、教えてください。
4オクターブを想定しています。

411:デフォルトの名無しさん
08/06/09 14:47:42
>>410
GCC関係あるのか?

どういうプラットフォームで何からどうやって音を出そうというのかを
はっきりさせて下のスレあたりで聞いたほうがいいように思う。

サウンドプログラミング4
スレリンク(tech板)

412:デフォルトの名無しさん
08/06/11 12:28:28
GCCでプリコンパイル済みヘッダ使うとき、元のヘッダ*.hと同じディレクトリに
*.h.gchが作られますけど、release用とdebug用の二つのプリコンパイル済みヘッダを
使いわけたいときなんかは、皆さんどのようにしてますか?

413:デフォルトの名無しさん
08/06/11 15:48:52
*.h 自体を release や debug 用ディレクトリに
コピーしてから使ってるなぁ。


414:デフォルトの名無しさん
08/06/11 15:58:59
ディレクトリ指定してそこに作らせる。

415:デフォルトの名無しさん
08/06/11 16:02:27
URLリンク(gcc.gnu.org)
によると、*.h.gch というディレクトリを作って、その中にそれぞれ用のプリコンパイルヘッダを置いておくといいらしい・・・

416:412
08/06/11 22:22:02
>>415 さんのやり方で無事できました。皆さんありがとうございます。
*.h.gchディレクトリ以下で、コンパイルオプションが同じものを勝手に使ってくれるようです。
プリコンパイル済みヘッダのファイル名はなんでもいいようです。

417:デフォルトの名無しさん
08/06/14 17:28:44
長い間VC6、VC8(MFC)で実装をやってました
この度、新しいプロジェクトでlinuxでC++の実装を担当することになったのですが
VisualStudioの生ぬるい環境に、長い間どっぷり浸っていたせいで
いまいち、調子がよくありません
gcc(g++)の環境で、VisualStudioのようなデバッガーって無いのでしょうか?

418:デフォルトの名無しさん
08/06/14 18:14:02
EclipseもC++に対応してたような

419:デフォルトの名無しさん
08/06/14 19:47:48
>>418
Thx
Eclipseをインストールして、続けてC++の開発環境もインストールしました
実装に専念できそうです

420:デフォルトの名無しさん
08/06/14 22:03:30
Eclipse既にインスコしたようだが、Dev-c++もお奨め

421:デフォルトの名無しさん
08/06/15 00:25:52
eclipse/cdtかkdevelopだな

422:デフォルトの名無しさん
08/06/15 00:46:17
Emacs以上の環境は存在しない

423:デフォルトの名無しさん
08/06/15 01:29:33
これがゆとり世代か・・・

424:デフォルトの名無しさん
08/06/15 03:30:54
emacsはもう死んだよ

425:デフォルトの名無しさん
08/06/15 09:16:05
Emacs is dead. The future is notepad.

426:デフォルトの名無しさん
08/06/15 13:48:10
>>424
ん?xyzzy が便利なんですが。CL だし。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5040日前に更新/147 KB
担当:undef