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法
URLリンク(ja.wikipedia.org)
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 だし。
427:デフォルトの名無しさん
08/06/15 13:50:55
emacs憶えたら便利なんだろうって何となく思うけど、
憶えるための最初の一歩を踏み出す気が起きない。
428:デフォルトの名無しさん
08/06/15 14:49:38
以下のような関数をgccでビルドするとき、
最適化オプションを何もつけていないのに
return -1;の部分が最適化されて消えてしまうことってありますか?
int func(void) {
// この関数が呼ばれた時点でバグなのでデバッグ時は無条件にアサートさせる。
assert(false);
// リリース時に万が一呼ばれたときはエラー値を戻す。
return -1;
}
429:デフォルトの名無しさん
08/06/15 14:51:50
gcc -S でソース嫁
430:デフォルトの名無しさん
08/06/15 15:07:12
>>428
gccは最適化ナシでも簡単なフロー解析(この場合、あからさまに到達不能なブロック)はやっている。
assert() 内部では __attribute__((noreturn)) なファンクションが呼ばれている。
あとはわかるな?
431:428
08/06/15 15:55:11
>>429,430
どうもです。
以下のソースを
gcc -S -o test.s test.c
と
gcc -S -DNDEBUG -o test2.s test.c
とすると挙動がわかりました。
ありがとうございました。
#include <assert.h>
void f(void)
{
assert(0);
int i = 0;
++i;
}
432:デフォルトの名無しさん
08/06/18 01:00:22
複数の-g系オプションを並べた場合は
後ろの方が強いのですか?
gcc -ggdb -gxxx
433:デフォルトの名無しさん
08/06/18 22:12:53
gcc 4.3,ひどいな…
434:デフォルトの名無しさん
08/06/18 23:56:53
いつものごとく4.5くらいまで進めば安定するんでないかい。
ということで3.4使いつづけとります。
435:デフォルトの名無しさん
08/06/19 00:39:25
俺にとって、4.3はC++0xのためだけに存在しているようなもの。
436:デフォルトの名無しさん
08/06/19 02:02:01
openmpのこともたまには思い出して上げてください
437:デフォルトの名無しさん
08/06/19 02:09:27
>>436
思い出してもageません?
438:デフォルトの名無しさん
08/06/19 13:22:48
Converting GCC to C++
URLリンク(lwn.net)
439:デフォルトの名無しさん
08/06/19 20:38:48
>>438
これはつまり
gcc cxx.cpp
ができるようにするからくりというわけ?
440:デフォルトの名無しさん
08/06/19 21:36:18
GCC を C++ に移植したいらしい。
441:デフォルトの名無しさん
08/06/19 21:51:26
The FSF is not writing the code. にワロタ
442:デフォルトの名無しさん
08/06/19 22:14:20
>>440
そっか逆か。ありがと。
443:デフォルトの名無しさん
08/06/19 23:08:06
もういっそJavaでもいいんじゃね派が登場して
混沌としてほしい
444:デフォルトの名無しさん
08/06/20 08:48:26
なんてアグレッシブな!と思ったけどブランチ作っただけでコードはまだか。
内部のモジュール化が進むといいなあ。
445:デフォルトの名無しさん
08/06/25 01:07:28
JavaでいいならCOINS
446:デフォルトの名無しさん
08/06/29 23:26:34
GCC 3.4 x86_64 で -mno-sse が効かないんですが、理由が分かる人はいますか?
gcc -S -fverbose-asm の出力を見ると、-mno-sse を付けているにも関わらず -msse が有効になっています
実際、アセンブリを見ても SSE 系の命令が出力されています
447:デフォルトの名無しさん
08/06/30 01:01:06
>>446
-mfpmath=387
448:デフォルトの名無しさん
08/06/30 01:56:55
>>447
それを付けても駄目みたいです
また GCC 4 系ではそれを付けなくても -mno-sse が有効になります
449:デフォルトの名無しさん
08/06/30 02:01:23
>>446
>GCC 3.4 x86_64 で -mno-sse が効かないんですが、理由が分かる人はいますか?
横な質問なんですけどx86_64でSSEの無いCPUって何ですか?
450:デフォルトの名無しさん
08/06/30 02:28:49
>>449
あまり詳しいことは書けないけど
XMM レジスタを使わないことが前提のアセンブリコードや CPU エミュレータがあるので
C ソースファイルをコンパイルするときに SSE コードを生成して欲しくない
あるいは浮動小数点演算自体の使用を禁止する運用も可能だけど
その場合、浮動小数点演算を使用しているソースをコンパイルエラーで弾くくらいはする必要がある
451:デフォルトの名無しさん
08/07/01 16:46:13
-mno-sse2 なんてオプションはなかったよなw
452:デフォルトの名無しさん
08/07/02 00:25:02
>>451
GCC 4 なら -mno-sse だけで -mno-sse2 -mno-sse3 まで付きますし
GCC 3.4 はそれらを併用しても駄目ですね
453:デフォルトの名無しさん
08/07/02 00:51:05
gccのことは知らないが、
windowsだとlong modeでFDP/MMX系のレジスタは一切使わない。
スタックフレームもレジスタ優先でほとんど使わないし、
そのとき実数データの受け渡しにXMMレジスタ使ってる。
XMM使うなというのが無理な話状態なのです。
454:デフォルトの名無しさん
08/07/07 00:18:00
すみません、gdbの質問をしたいのですがここでもいいですか?
gdbの中でグローバル変数の一覧を取得(表示)する方法はありますかね?
ローカル変数に関してはinfo localsがありますが。
455:デフォルトの名無しさん
08/07/07 01:05:59
shell から nm 呼ぶってのは無し?
456:デフォルトの名無しさん
08/07/07 02:39:05
info variables
457:454
08/07/07 09:49:28
>>455
えっとグローバルなbssとdataのシンボルを見ろということですかね?
やってみたんですが、自分がいじってるプログラムではどうもconstな変数が
textにいるように見えるんですが... ldの挙動をコントロールしているようで。
デバッグのときだけ「普通」にリンクするというのはありかもしれませんが...
>>456
やってみるとなんかエントリーが重複して見えるんですが、そんなもんですかね。
ちなみにinfo localsと違って値を表示してくれたりはしないんですね。
458:デフォルトの名無しさん
08/07/12 17:05:47
コンパイルをした日時を埋め込む・取り出す方法ってありますか?
今はmake時に引数で`date`なんかを渡す方法を使ってるけど
そのdefineを使うソースがコンパイルの対象になっていない限り
反映されないので、いまいち使い勝手がわるいんです
459:デフォルトの名無しさん
08/07/12 17:12:50
シェルで、日時を何かのファイルに書き込んで、
それからコンパイル。
460:デフォルトの名無しさん
08/07/12 17:15:10
そのソースを毎回必ずコンパイルするようmakefileを書けばいいのだと思うんだけど
461:デフォルトの名無しさん
08/07/12 17:26:04
>>460
その方向でやってみます
となると、次はMakefileスレだな
462:デフォルトの名無しさん
08/07/12 17:43:50
__DATE__ とかないんだっけ
フォーマット考えると自分でやったがいいか
463:デフォルトの名無しさん
08/07/12 18:08:17
all: hoge ・・・・・・・・
hoge:
絶対コンパイルしたいファイルをコンパイル
でいいんじゃね?
464:デフォルトの名無しさん
08/07/12 20:39:26
GNUmakeなら.PHONYとか
465:デフォルトの名無しさん
08/07/12 21:02:58
ファイルの一番後ろに日付書いといたらいいんじゃないの
466:458
08/07/12 21:20:32
やっぱ>>460の方法はやめました
コンパイルする必要がないときでもmake叩くと必ずコンパイルされてしまう
というのは俺の精神衛生上よくないことがわかりました
467:デフォルトの名無しさん
08/07/12 22:36:37
コンパイルした実行ファイルの日付をチェックすればええんちゃう?
468:デフォルトの名無しさん
08/07/13 00:51:20
埋め込むんじゃなく、コンパイルするたびに
バイナリのMD5ハッシュと時刻をログファイルに記録すればいいんじゃね。
469:デフォルトの名無しさん
08/07/13 01:02:01
質問です。
インストールしたてのcygwinにgcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
がインストールされているので、gccを最新版の4.3.1にしようと思ったのですが。
configure --prefix=/usr/local とし、
make したら
/home/***/gcc-4.3.1/i686-pc-cygwin/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp:108: error: invalid use of incomplete type 'class __gnu_pbds::detail::thin_heap_<Value_Type, Cmp_Fn, Allocator>'
のところで詰まってビルドが止まってしまいます。
この原因についてご存知の方いらっしゃいませんか?
470:458
08/07/13 01:33:13
>>468
それも考えたのですが、なんか面倒なので
リンカに頑張ってもらう方法を調べることにします
471:デフォルトの名無しさん
08/07/13 09:04:25
>>466
それはmakefileの書き方でいくらでも回避できるんじゃね?
最後のlinkする所のtargetの中で依存関係無しにちょろっとccしてしまえばいいんじゃ
472:デフォルトの名無しさん
08/07/13 10:07:05
cat `date` >> hogehoge
とかやって、
strings -a hogehoge
とかやると、読めなくもない。
473:デフォルトの名無しさん
08/07/13 10:09:39
stringsを使わなくても、
tail -c [文字数] hogehoge
でもいける。
後から偽の時刻を埋め込まれたら知らんけど。
474:デフォルトの名無しさん
08/07/13 10:36:17
いずれにしろ -D で渡すのも気に入らないとか、
コンパイラのほうで実現するのは気持ち悪いとか言ってるから、
スクリプトとか他のもので好きなように実現するのがいいんじゃないのか?
475:デフォルトの名無しさん
08/07/13 11:08:07
%%%%%%%%%%CREATION_DATE%%%%%%%%%%%%%%% とか他にありえない文字列で
領域を確保しておいて、ビルドした後で実行ファイル(ライブラリかも知らんが)を
直接書き換えればいいんでは。
476:デフォルトの名無しさん
08/07/13 19:12:12
foo: $(shell date).o
$(shell date).c:
477:デフォルトの名無しさん
08/07/17 04:56:52
VC++からの移行組です。
VC++のソースをGCCでmakeしようとして、
いくつかの違いのエラーで悩まされてしまいました。
それで、どうやっても解決策・代用策が思い浮かばない点を質問させてください。
this->m_char_table[ (add_unsigned<T>::type)c] = this->m_char_table_index;
このように、テンプレートの型をunsignedにキャストして利用したいのですが
GCCではエラーとなります。
こういう使い方は出来ないのでしょうか?
また代用の方法はないのでしょうか?
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
を使用しています。
よろしくお願いします。
478:マイク ◆yrBrqfF1Ew
08/07/17 07:26:46
おっおっおっ⊂ニ( ^ω^)⊃
ちょい書き込みtest
479:デフォルトの名無しさん
08/07/17 09:13:45
>>477
エラー張ってくれよ。
480:デフォルトの名無しさん
08/07/17 09:14:20
あとcの型な。
481:デフォルトの名無しさん
08/07/17 09:51:06
>>458
__DATE__ __TIME__でいける。
例
const char aaa[] = __DATE__ __TIME__;
482:477
08/07/17 13:49:10
>>480
cの型はテンプレート(T)です。
基本的には、char、wchar_t、int、shortなどを取ります。
それ以外の型が入れられる事はないようにはなっていますが
基本的には特定はされません。(自分用のライブラリなので整数以外を取る事はありません)
>>479
error: dependent-name ` add_unsigned<T>::type' is parsed as a non-type, but instantiation yields a type
です。役に立ちますでしょうか?
よろしくお願いします。
483:477
08/07/17 13:52:17
自己解決しました。
そのエラーメッセージの後に
note: say `typename add_unsigned<T>::type' if a type is meant
と出ており、そのとおりやったら解決しました。
盲点でした。
どうもありがとうございました。
484:デフォルトの名無しさん
08/07/17 13:55:51
どの辺が盲点なのかと。
英語で書いてあるところか?
485:デフォルトの名無しさん
08/07/17 14:04:14
つーかそれ、VC++でもエラーにならね?
VC++6.0組?
486:デフォルトの名無しさん
08/07/17 14:19:24
>>485
6.0、2003、2005、2008で試したけど問題にならんよ。
VC++はなぁなぁだからなぁ・・・。
IEとかと同じで、その辺がMSの製品って好まれるんだろうね。
いいとは思わんけど、ちゃんと規格にそってる方が敬遠される状態は勘弁してもらいたい。
487:デフォルトの名無しさん
08/07/17 14:23:04
いや、この場合はGCCの規格が悪いと思う。
普通に考えればtypenameをキャスト時にするのはおかしいもの。
次に>>477が詰まるのは、wchar_tかなw
wchar_tを取りうるって言ってるし。
GCCのwchar_tは欠陥品な上、
文字コードの統一の問題が・・・w
488:デフォルトの名無しさん
08/07/17 15:02:46
>>487
5.4 Explicit type conversion (cast notation)
8.1 Type names
7.1.5.3 Elaborated type specifiers
くらい読めよ。
あと「GCCの規格」なんてバカな言葉は使うな。
どうせいうなら「GCCの仕様」あるいは「GCCの実装」だ。
wchar_tもいい加減なこと言ってるよなあ。
489:デフォルトの名無しさん
08/07/17 15:46:45
典型的な、コンパイラとライブラリの区別がつかないひと
490:デフォルトの名無しさん
08/07/17 15:59:02
いや、GCCの仕様は馬鹿だろ
あれほど必要の無い理解しがたい仕様をつめるのは
頭の悪い俺には理解できんよ(笑)
491:デフォルトの名無しさん
08/07/17 16:00:39
>>489
typename 修飾子って本来ライブラリの管轄じゃないだろ・・・
492:デフォルトの名無しさん
08/07/17 16:03:54
キャストの問題もライブラリの管轄とは思えんが・・・
493:デフォルトの名無しさん
08/07/17 17:34:46
wchar_tの話だろ。
494:デフォルトの名無しさん
08/07/17 17:39:14
>>484
最初からエラーメッセージ張らない人だから、
そもそもエラーメッセージを読まない人なんじゃないかとw
495:デフォルトの名無しさん
08/07/17 17:59:12
むしろ、エラーメッセージしか見なかったんだろ。
最初の質問で、エラーの内容は理解してると思われる。
ただ、エラー以外をみなかった。ということだろう。
いやね、俺もその傾向あるからわかるんだが
コンパイラってだいたいロクなメッセージ伝えてこないから
エラーそのものしか見る気しないのよ。そのエラーすら別の箇所による問題によって
引き起こされてたりするので、そのまんま信じるわけじゃないし。
1つエラー出ると、大量にどうでもいいメッセージが出るから、頭の中でフィルタかけないとエラーは解決できない。
496:デフォルトの名無しさん
08/07/17 18:22:53
寧ろ、そんな発想だからフィルタが必要なんだろ。
497:458
08/07/18 09:44:05
>>481
そのファイルがコンパイルされた日時ならそれでいいけど・・・
498:デフォルトの名無しさん
08/07/18 10:12:00
何が望みなんだかわかんねえ
499:デフォルトの名無しさん
08/07/18 10:25:03
>>497
Makefileで常にコンパイルするファイルをそれにしておけばいいんじゃね
500:デフォルトの名無しさん
08/07/18 12:14:13
>>498
消えろ
501:デフォルトの名無しさん
08/07/18 12:17:07
俺もよくわからない。
.oが出来た日時をCのソースから利用したい。
a.outが出来た日時をCのソースから利用したい。
どっちなの? 前者なら>>481でFAでしょ?
後者なら>>464の方法で出来るよね。
もっと違うこと?
502:458
08/07/18 13:10:48
>>501
バージョンを取得する関数のあるソースを hoge.c としたとき
hoge.o を他の全オブジェクトに依存させればいいのかな?
やってみるよ。
503:458
08/07/18 13:15:23
できた。ありがとう >>501
>>499
コンパイルの必要が無いときはコンパイルしたくないんですよ。
504:デフォルトの名無しさん
08/07/18 15:04:35
501だが、>>501と>>502眺めて
30秒考えてようやく仕様が分かったw
>>501の後者って事だよね。
>>464の言っている別解だが、
.PHONY: hoge.o
これで「hoge.o is up to date」になることなく、
hoge.oが必要とされれば、タイムスタンプ比較をショートカットして、
毎回ルールに基づいて生成しようとする。で、
a.out: $(OBJS) hoge.o
としておけばいい。
505:デフォルトの名無しさん
08/07/18 15:56:12
>>504
それソースが更新されてないときでも、生成されね?
506:デフォルトの名無しさん
08/07/18 16:17:45
a.out が更新されたってことは生成必要なんじゃ?
507:デフォルトの名無しさん
08/07/18 16:50:47
a.out: $(OBJS)
$(COMPILE) $(CFLAGS) hoge.c
$(LINK) $(OBJS) hoge.o
508:デフォルトの名無しさん
08/07/18 17:14:44
BCB使っていて興味本位にGCC触ってみたんですけど
下のコードって通らない、というか間違った書き方なんでしょうか?
環境はubuntuのg++4.1.3です
template< typename T >
class test
{
friend class test< T >; <<ここで怒られてる
public:
int aaa;
};
509:デフォルトの名無しさん
08/07/18 17:20:07
エラーメッセージは?
読んだ?
510:508
08/07/18 17:38:43
~ error: class 'test<T>' implicitly friends with itself
と出ていました。
英語もわからずGUIでしか操作したことないとGCCなんて使うこと出来なさそうだなぁ。
511:デフォルトの名無しさん
08/07/18 17:45:22
「自分自身はいちいち宣言しなくてもfriendされてるのと同じことできるよ」と言っています。
512:デフォルトの名無しさん
08/07/18 17:51:40
ええええ!
・・・実体が違うなら同じクラスでもpraivateに触れないと思ってました。
ありがとう!
513:デフォルトの名無しさん
08/07/18 20:56:11
なんか .PHONY が誤解されてる気がする。
514:デフォルトの名無しさん
08/07/19 09:00:41
>>512
ちっとは英語の勉強しようよ。なんだそのスペリングミスは。
515:デフォルトの名無しさん
08/07/19 09:08:09
わざとじゃねーのか。
さすがにキーワード間違えないだろ
516:デフォルトの名無しさん
08/07/19 09:32:08
playmateに触れたい
517:デフォルトの名無しさん
08/07/23 00:32:51
あるオブジェクトファイルがリンクされたかどうかって・・・というか、
あるシンボルの中身が存在するかどうかってソースレベルでチェックできる?
存在しないシンボルを参照してもリンカがエラーを吐かないことが前提で・・・
518:517
08/07/23 00:47:49
__attribute__((weak_import)) が自分のやりたいことに合致しそうだけど
サポートしてるのは MacOS X だけっぽい
諦めてほかの方法を探すかな
519:デフォルトの名無しさん
08/07/23 01:29:49
何をしたいのかがわからない。
実行時にシンボルの中身が存在するか判定したいんだったら遅延リンクでもいいんじゃね?
520:デフォルトの名無しさん
08/07/23 01:48:10
>>517
つ dlopen(3)
521:デフォルトの名無しさん
08/07/23 06:42:03
>>517
オブジェクトのリンク状況つうのは、
foo.c
#include <stdio.h>
int bar_magic = 0 __attribute__ ((weak));
int is_bar(void)
{
return 0;
}
int main(void)
{
printf("%d\n", is_bar());
return 0;
}
bar.c
int is_bar(void)
{
return 1;
}
とかやって、
$ gcc -o foo foo.c && ./foo
$ gcc -o foo foo.c bar.c && ./foo
の結果が変わるでいいんですか?
522:517
08/07/23 19:07:38
>>519
質問の仕方が下手ですまん。
最終的には組み込む予定のとある関数を、一時的に外したいが #ifdef などでソースを切り分けたくない。
シンボルの中身の有無がプログラム中から判別できれば、 makefile 側でリンクするオブジェクトを
管理するだけなので楽かなと思った。
>>520
条件の後出しで申し訳ないが、組み込み環境なので動的リンクはちょっときつい。
>>521
weak_import じゃなくて weak で良かったのか。どうもありがとう!
int weak_func(void) __attribute__ ((weak));
/* int weak_func(void) { return 1; } */
int main(void)
{
if (weak_func)
{
dbg_print("Function exist\n");
}
else
{
dbg_print("Function not exist\n");
}
return 0;
}
523:デフォルトの名無しさん
08/07/23 20:59:40
リンクエラーは解決したか?
524:517
08/07/23 23:48:01
>>523
俺宛てかな?実はそこが問題になるとはあまり考えてなかった。
中身が無いことを前提にしたシンボル参照をソースで意図出来れば、
当然リンカもエラーは吐かないだろうと思ってたので。(そしてその通りになった)
でも気にしてくれてありがとう。
今後の予定としては、間違えて同名のシンボルを別のソースで定義してしまい
関数が上書きされたことに気づかずバグに苦しむ。というストーリーを計画しています。
525:デフォルトの名無しさん
08/07/24 17:14:00
GCCのコンパイルがおわらねぇ
526:デフォルトの名無しさん
08/07/24 17:17:21
まあ環境によっては2日仕事だな
527:デフォルトの名無しさん
08/07/24 18:37:23
マジか…
400MHzのアナルスペックで3時間くらい放置してる絶望
528:デフォルトの名無しさん
08/07/24 19:31:19
余計なの削除してやり直すか…
529:デフォルトの名無しさん
08/07/24 20:51:42
>>525
もし余ってるマシンがあるなら、distccで分散コンパイルとかどうよ。
C++だとエラー出まくりで、コンパイルできなかったりするけど。(これは俺の設定が悪いのかな?)
530:デフォルトの名無しさん
08/07/24 22:41:16
make LANGUAGES=cで放置
メインのPCは修理に出してしまったから、400MHzの一台しかないんだよ…
やっと3時間くらいでstage1が終わったから、朝までつけっぱなしで終わりそうかな
マルチコアCPUなら-j 2とか付けたいんだけど…
531:デフォルトの名無しさん
08/07/25 09:25:12
>>530
ひとつでも-j 2はこうかてきめんだよ。
HDDに書いてる間CPUひまだし
532:デフォルトの名無しさん
08/07/25 17:15:29
今まで-jなんて知らなかったorz
クアッドコア使えるのに。
533:デフォルトの名無しさん
08/07/25 18:26:22
な、なんだってー(AA略
534:デフォルトの名無しさん
08/07/25 19:21:39
ーj10
535:デフォルトの名無しさん
08/07/25 19:33:24
軽く15年前からあるオプションだよなw
536:デフォルトの名無しさん
08/07/25 20:02:57
エラーでるわ
素直にバイナリ落としてきた
537:デフォルトの名無しさん
08/07/25 20:03:33
OpenOffice.orgは非常に大きなプログラムなので、
RPMファイルの作成には長い時間が必要となる。
1GHzのCeleronで実行したところ、14時間以上かかった。
URLリンク(www.atmarkit.co.jp)
538:デフォルトの名無しさん
08/07/26 21:28:10
C言語で書かれているプログラムをAlphaの命令セットで実行できるように
クロスコンパイルするにはどうすればいいのでしょうか
まず何が必要なのでしょうか?
とりあえずGCC,binutil,glibcを用意してみたのですが…
539:デフォルトの名無しさん
08/07/26 22:05:49
>>538
URLリンク(linux.bytesex.org)
でどうよ?
540:デフォルトの名無しさん
08/07/27 05:47:44
gccやbinutilもってきたなら中のドキュメント読めば、つーか
configure --helpすれ。
541:デフォルトの名無しさん
08/07/27 09:35:55
>>539
すげーどめいんw
542:デフォルトの名無しさん
08/07/27 10:15:19
んー。「エンディアンネス」のくだけた表現で、向こうではわりかし普通よ?
URLリンク(www.catb.org)
543:デフォルトの名無しさん
08/07/27 15:02:15
>>541
もしかして:
www.bitesex.com
544:デフォルトの名無しさん
08/07/27 19:37:15
>>541
vmware に NetBSD 入れて /usr/src/build.sh -m alpha tools
545:544
08/07/27 19:38:37
>>541
って、すげードメイン、か。すげーめんどいん、に見えた。
逝ってくる。
546:デフォルトの名無しさん
08/07/27 19:48:13
すげーメイド!
547:デフォルトの名無しさん
08/07/29 00:34:26
いろいろアドバイスありがとうございます
とりあえずGCC,binutil,glibcだけでなんとかなるor541の方法ってことでOK?
binutils入れてみようとおもったのですがconfigureで HOST=~には使っているマシンの
状況を書けばいいのかな? それともプログラムのバイナリを実行させる先の
事をかけばいいのか…
HOST=CPU-COMPNY-SYSTEM ってことらしのですが
CentOSでPentium4のマシン使っている場合だとx86-centos-linuxで
いいんですかね?
548:デフォルトの名無しさん
08/07/29 00:46:44
>>547
カナディアンクロスやるんじゃなければ
ホストは configure が勝手に発見してくれるので
/path/to/configure --target=
で桶
いろいろほげってダメだったらまた濃い
549:548
08/07/29 00:50:02
ちなみにこのへんの GNU toolchain は
カナディアンクロスもある程度考慮されてるので
"Linux ホストで、MipsターゲットのCygwinバイナリを作る"
てな感じも(必要な知識があれば)可能。
↑経験談
550:デフォルトの名無しさん
08/07/30 21:50:20
GCCは変態だなぁ(褒
551:デフォルトの名無しさん
08/08/06 07:44:13
クロスコンパイルはGCC & binutilsの独擅場だからねぃ
552:デフォルトの名無しさん
08/08/22 03:13:53
このスレには優しい神が宿っているようだ。
553:デフォルトの名無しさん
08/08/27 02:39:23
>>550
変態なgccだなあ
554:デフォルトの名無しさん
08/08/28 13:49:35
4.3.2
555:デフォルトの名無しさん
08/08/30 01:09:13
GCCは最高のクロス開発環境だなあ
556:デフォルトの名無しさん
08/08/30 20:49:53
GCC に #pragma optimize はないんですよね?
ある大きな数値計算プログラムがあって、
全体としては -O や -O2 など最適化はしたい。
けど一部、計算誤差などを考慮した、
計算の順番を変えてほしくないコードがある。
Intel Compiler などは pragma でソコは最適化しないように
回避できるんだけど、GCC はどうしようかと。
なんか手段あります?
ソースを分けて、そこだけ -O0 にするしかないのかな?
557:デフォルトの名無しさん
08/08/30 21:07:41
> ソースを分けて、そこだけ -O0 にするしかないのかな?
と思う。
558:デフォルトの名無しさん
08/08/30 21:17:06
>>556
-fno-fast-math か?
559:デフォルトの名無しさん
08/08/31 00:43:26
556とは別人なんだがinline関数なんかの場合はそこだけコンパイラオプションを変えるわけにもいかないし
精度は保ちつつ最大限速くしてもらいたいからvolatile使うのも嫌だしとワガママ言ってしまうことはあるね。
Cを高級アセンブラとして使っているときに
局所的に自分でスケジューリングした順序で動いて欲しいこともあるし。
560:デフォルトの名無しさん
08/08/31 13:43:44
>>556
研究や業務で使う道具としては悩むよりもicc使っておいた方が良い場合に該当するんじゃなかろうか?
561:デフォルトの名無しさん
08/08/31 16:33:28
volatile とかうまく使えないんだろうか
562:デフォルトの名無しさん
08/09/02 07:14:38
GCCでもPGOであるんですか?
563:デフォルトの名無しさん
08/09/02 07:57:22
最近のならあるよ
-fprofile-generate/-fuse-profile
564:デフォルトの名無しさん
08/09/02 07:57:55
まちがえた-fprofile-useね
565:デフォルトの名無しさん
08/09/02 16:26:38
フリーなのにすごいですね…
566:デフォルトの名無しさん
08/09/02 18:06:49
実績だけは(アーキテクチャによっては)存分にあるからな。
567:デフォルトの名無しさん
08/09/03 02:16:10
__artificial__アトリビュートを調べていたら、下のドキュメントが
あったけどなんかいまいち理解できん。
わかりやすい日本語で解説してくれ!
artificial
This attribute is useful for small inline wrappers
which if possible should appear during debugging as a unit,
depending on the debug info format it will either mean marking
the function as artificial or using the caller location for
all instructions within the inlined body.
568:デフォルトの名無しさん
08/09/03 03:21:28
この属性は小さなインラインラッパー関数に使いよい。
その関数とはどういうものかというと、デバッグ中には
関数の中に入らずに単体として扱われるのが望ましいもの。
この属性がどう実現されるかというと、
デバッグ情報フォーマットによるが、
関数にartificialというマークをつけるか、
またはインライン化された関数本体中の呼び出し位置を使う
(どう使うのかは書いてない)ことになるだろう。
……と理解した。
デバッグの必要のないような機械的に生成したラッパーインライン関数
なんかに使うといいんでないのかしら。
569:デフォルトの名無しさん
08/09/03 04:14:54
$(GCC)/gcc/config/i386/emmintrin.h みてね。
570:567
08/09/04 00:45:24
>>568
よく分かった!ありがとぅ!
>>569
まさにそれを見てて気になったんで調べてた
とりあえず、*mmintrin.h は非常に使いづらいんで
自前でラッピングしようと思った次第。
それにしても、GCCのアトリビュートは書きにくい。
アトリビュートはC#の書き方がいい感じ。
[Align(16)]
int hoge = 12;
とか。
571:デフォルトの名無しさん
08/09/04 01:29:14
gccの方が何に掛っているかはっきりする。
572:デフォルトの名無しさん
08/09/06 03:11:43
gccでコンパイルしたバイナリを販売したらダメなんだろ?
イミネー
573:デフォルトの名無しさん
08/09/06 03:21:42
いや、コンパイルしたもの自体は問題にならない。
GPLなソースが混入してない限り。
だがそれが回避しにくいように念入りに作られてるんだわこれが…
574:デフォルトの名無しさん
08/09/06 03:29:58
それと仮にGPLだったとしても、GPLなら販売禁止ってわけじゃないよ。屁理屈みたいだけど。
575:デフォルトの名無しさん
08/09/06 04:03:45
>>572
どこでそんな嘘聞いてきたんだ。
576:デフォルトの名無しさん
08/09/06 04:07:21
>>573
作られてない。そもそもふつーにコンパイルする範囲ではGPLの影響は受けない。
お前のプログラムにGPLが感染するのは、コンパイラ関係無しにGPLのコードを混入させたときだけだ。
577:デフォルトの名無しさん
08/09/06 04:12:17
>>572-573
なのこの頭の悪いしったか連中…
libcがGPLのときのバイナリと混同でもしているのか?
578:デフォルトの名無しさん
08/09/06 05:15:05
4.4がstage3になったのか。
リリースは来年ですかねえ。
>>577
libgccが例外なしGPLとか。
579:デフォルトの名無しさん
08/09/06 06:12:30
In addition to the permissions in the GNU General Public License, the
Free Software Foundation gives you unlimited permission to link the
compiled version of this file into combinations with other programs,
and to distribute those combinations without any restriction coming
from the use of this file.
580:デフォルトの名無しさん
08/09/06 20:32:00
GNU一般共有使用許諾における許容に加えて、フリーソフトウェア基金はこのファイルのコンパイルされたバージョンを他のプログラムへの組み合わせにリンクして、このファイルの使用から無制限に来るそれらの組み合わせを広げる無制限な許可をあなたに与えます。
581:デフォルトの名無しさん
08/09/07 00:30:47
しかし、このスレは定期的にGPLの話がでるな。
とりあえず、
・GLPのソースを含んだ実行ファイルから利益を得ることは制限されない。
・ただ、ソースを見せろと言われたら全て見せなくてはならない。
・それは不便だからLGPLがあり、その場合は以下の条件を満たせばソースを
見せる必要はない。
・使用しているLGPLなソースを第三者が修正して、再度、配布しているもの
と同等の実行ファイルを作成出来なければならない。
・ダイナミックリンクの場合は特になにもする必要はないが、
スタティックリンクの場合は、リンクに必要なオブジェクトファイル
(具体的には、*.o)を提供しなければならない。
・同等の実行ファイルを作成出来ることが必要という縛りがあるので、
LGPLだからと言ってこっそりコピペするのは(・A・)イクナイ!!
(結局ソースを提供しなければ同等にならない可能性があるので。)
と理解している。
582:デフォルトの名無しさん
08/09/07 00:37:10
GPLのプログラムがLGPLのライブラリを読み込んだとき、
LGPLのプログラムのソースの公開の義務は発生しますか?
583:デフォルトの名無しさん
08/09/07 01:01:47
GPLのプログラムとリンクした時点で、ライブラリもGPLになります
584:デフォルトの名無しさん
08/09/07 01:42:31
>>583
なんですとぉ!
自作ツールでアーカイバプロジェクトの
スタティックライブラリをリンクしたとする
自分のものでもないしソースもないけど勝手にGPL?
d3d9x.lib とかスタティックライブラリじゃん
困らね?
585:デフォルトの名無しさん
08/09/07 02:12:44
おいおい、めちゃくちゃだな。
>>582
GPLのプログラムもLGPLのプログラムもソースを公開する義務がある。
悩む必要はまったくない。公開してくれ。
>>584
その自作ツールのライセンスはなんだ?
ソースを公開したくないんだったら、LGPLのライブラリをリンク
してれば大丈夫だ。ライブラリがGPLの場合は無理。
> d3d9x.lib とかスタティックライブラリじゃん
> 困らね?
それはまた違うラインセンスになってるだろ。
詳しくは知らんが、それをちゃんと調べるべき。
586:デフォルトの名無しさん
08/09/07 02:38:31
>>584
全体をGPLにできる場合のみ、GPLのコードを基に著作物を形成・複製・頒布することが許諾される
条件を満たせないなら、GPLの使用許諾は得られない
587:デフォルトの名無しさん
08/09/07 03:26:44
>>584
勝手じゃないだろ。使うソフトウェアのライセンスは読もうよ。
588:デフォルトの名無しさん
08/09/07 03:43:21
非GPLなプログラムからGPLなライブラリを使うときは
非GPL部分とGPL部分とでプログラムをわけて、
ソケット通信をすればおk
まあGPL部分は諦めて公開する必要があるけど
どうしても非公開にしたいコアな部分は非GPLにできる。
589:デフォルトの名無しさん
08/09/07 05:51:49
>>584
いや、d3d9x.libってCygwinかなんかの?LGPLなの?
困るんならMSのライブラリとコンパイラ使いなよ。
または、d3d9x.lib相当の機能は、自分で作らないと。
他人の成果物使ってんだからさ。
ライセンスに従えない人間に使われるのてむしろ困るのは、
ライブラリを作ってる側だし。
590:デフォルトの名無しさん
08/09/07 06:03:04
>>588
そのソケット通信は確実に白なの?
前にそんなことが議論になったみたいだけど、
結論がどうなったか知らないんで。
591:デフォルトの名無しさん
08/09/07 07:42:28
>>588の例だとGPL部分が不可欠ならばリンクしてなくても
派生物としてソースを公開する必要があるという議論だったと思う。
>>589
プロプライエタリなOSにGNUな開発環境を存在させるため
OSが提供するライブラリに関してはプロプライエタリでもGPLの公開義務の
対象外。
592:デフォルトの名無しさん
08/09/07 07:43:50
分かりにくいなぁ。GPLって。
このライセンスは、GNUが本来目指していた目的に合致するのだろうか・・・・
593:デフォルトの名無しさん
08/09/07 08:30:23
本来の目的って、すべてのソフトを未来永劫にわたってオープンソース化する
超過激思想だぞ? だからこそこんな感染性のあるライセンスにしたわけで。
594:デフォルトの名無しさん
08/09/07 15:01:14
そのへんは「オープンソース」界隈の連中が意図的にか天然か
勝手に話を混ぜ込んでいたりするからなw
595:デフォルトの名無しさん
08/09/07 15:34:48
>>582
*フリーではないライブラリを利用するフリーソフトウェアを書いているのですが、GPLを適用した場合どのような法的問題が発生するでしょうか?
URLリンク(www.gnu.org)
*「単なる集積」と「二つのモジュールを一つのプログラムに結合すること」の違いは何ですか?
URLリンク(www.gnu.org)
596:デフォルトの名無しさん
08/09/07 18:38:50
>>592
根本はとってもシンプル
結局はバイナリ公開したければソース出せボケ
いろいろな抜け道を塞ぐために条文追加するはめになっただけのこと
ストールマンの最初の動機と何も変わってないw
思想先行どころか実利的なGPL
597:デフォルトの名無しさん
08/09/07 18:55:43
>>591
d3d9x.libはOSのライブラリってこと?スタティックなライブラリが?
話が唐突で全然意味がわからん。
てっきり、GCC用のLGPLなライブラリだと思ったんだが。
あと、GPLならGPLが適用されるし、LGPLならLGPLが適用されるっしょ。
OSがプロプラとか関係無い。
598:デフォルトの名無しさん
08/09/07 19:54:20
すくなくともd3d9x.libについて調べればそういう話は出てこないとおもう。
簡単に言えば、Direct3Dについてくる、MSの3Dライブラリみたいな。
599:デフォルトの名無しさん
08/09/07 20:26:57
例えば、GPLな数値計算ライブラリと
Direct3D の組み合わせで計算結果を視覚化するソフトウェアがあるとする
このソフトウェアを α とする
α 内で使用されている D3DX* 系の関数は DirectX SDK の d3dx9.lib スタティックライブラリに含まれている
スタティックライブラリに含まれる部分のソースが無いので
出来上がった α を頒布することはできない
これで合ってる?
600:デフォルトの名無しさん
08/09/07 20:37:12
>>591
それが詭弁に過ぎないことは世の中のWebブラウザを見てればわかる
601:599
08/09/07 21:11:52
>>599はgcc関係なくて、GPLについてだけなのでスレ違いっぽいですね
602:デフォルトの名無しさん
08/09/07 21:23:56
>>600
わからん。具体的には?
603:デフォルトの名無しさん
08/09/07 21:46:58
mingwのgccがなかなか4系列にならないのはなんで?
604:デフォルトの名無しさん
08/09/07 22:11:01
>>603
4系列だとpchのテストが通らないからとか?
605:デフォルトの名無しさん
08/09/08 05:30:18
>>598
あー、d3dx9.libの事を言いたかったのか。
てっきり、d3d9x.libっていうCygwin用のdllラッパーか何かかと思った。
じゃあ、>>584は何を困ってんだ?自作ツールを公開したいってことか?
606:デフォルトの名無しさん
08/09/08 13:47:08
d3dx9.lib ってスタティックリンクライブラリなの?
DLL用インポートライブラリじゃなくて?
607:デフォルトの名無しさん
08/09/08 13:48:05
スタティックリンクライブラリ
608:デフォルトの名無しさん
08/09/08 14:24:42
そうなんだ。Thx!
609:デフォルトの名無しさん
08/09/08 21:32:03
GCC4.4 が stage 3 になったな
610:デフォルトの名無しさん
08/09/09 04:06:10
どちらにしろOSの機能を使うためにOSベンダが提供しているものは使って大丈夫。
611:デフォルトの名無しさん
08/09/09 05:53:39
GPLの何項にのってるの?
>どちらにしろOSの機能を使うためにOSベンダが提供しているものは使って大丈夫。
612:デフォルトの名無しさん
08/09/09 07:41:32
>> 611
ちょっと前のレスも読めないの?
613:デフォルトの名無しさん
08/09/09 12:00:16
>>612
>>611はGPLを読んだことすらないだろ。読んだことがあるなら
述べる主題によって項が立てられているのだから>>611みたいなこと
いちいち聞くまでもないと理解しているはずだから。
614:デフォルトの名無しさん
08/09/15 22:04:22
組込み以外で、何度もオブジェクトを小グループ単位で
スタティックリンクし、最後にlibxxxx.aを作る利点というと
何が思いつきますか
615:デフォルトの名無しさん
08/09/16 01:15:36
libxxxx.aを作るのはスタティックリンクちゃいますえ
616:デフォルトの名無しさん
08/09/16 01:21:56
libxxxx.aの中の関数を置き換えられる
617:デフォルトの名無しさん
08/09/25 21:01:57
C++のコードを-Weffc++を付けてコンパイルしたら、警告が出まくった男がいたんですよー。
よく見るとSTLのヘッダーファイルから発生してるやないかー
俺のせいちゃうやんけー
男は黙って ただの配列
618:デフォルトの名無しさん
08/09/28 18:19:32
export CPPFLAGS="-fprofile-genereate"
export LDFLAGS="-fprofile-genereate"
make
PGOつかいたいんですけど、
上のとおりにやったらcc1.exeっていうのが
-fprofile-genereateなんてしらねーよ!って怒るんです。
619:デフォルトの名無しさん
08/09/29 00:39:23
そりゃそうだろ。
620:デフォルトの名無しさん
08/09/29 03:46:49
gcc (GCC) 4.1.2(Linux)では、
構造体の代入はmemcpyを呼んじゃうもんなんですか?
32bitマシンでは4バイトずつのコピーを期待していたので。
621:デフォルトの名無しさん
08/09/29 05:55:21
>>620
gcc 4.3 or laterを使いましょう。
622:デフォルトの名無しさん
08/09/30 07:48:17
gcc って、-g で最適化(-O2など)が阻害されるようなことがあるの?
ずっとないと思ってたけど、気になってきた。
623:デフォルトの名無しさん
08/09/30 08:33:04
>>619
何でですか?
624:デフォルトの名無しさん
08/09/30 08:34:55
>>621
ありがとうございます。試してみます。
625:デフォルトの名無しさん
08/09/30 08:38:57
>>618
-pg
でどう?
626:デフォルトの名無しさん
08/09/30 09:10:50
>>623
目が腐ってるの? 頭が腐ってるの?
627:デフォルトの名無しさん
08/09/30 09:29:35
genereateってどういう意味だw
628:デフォルトの名無しさん
08/09/30 11:04:06
ニートだから最後は延ばしたくなるんだろうな。
629:Google先生
08/09/30 11:07:56
fprofile-genereateの検索結果 2 件中 1 - 2 件目 (0.52 秒)
もしかして: fprofile-generate
630:デフォルトの名無しさん
08/09/30 15:12:33
よくみたらスペル違うじゃないですか!!!!!!!!
↓のコピペしたから気付きませんでした><
URLリンク(d.hatena.ne.jp)
631:デフォルトの名無しさん
08/09/30 17:12:30
>>622
stripしてdiffしたら
632:ニート009
08/09/30 22:34:27
stripって何?
633:デフォルトの名無しさん
08/09/30 22:47:34
実行ファイルからデバッグ情報を取り除くこと
634:デフォルトの名無しさん
08/11/03 13:41:03
sh4-linux を組み込む クロス環境を作成中で、
binutils-2.19 ← 成功
gcc-3.4.6(ブートストラップコンパイラ) ← 成功
glibc-2.5 ←ここでこける
完全なsh4-gccの構築 ← ここへはたどり着けない
CC=sh4-linux-gcc ac_cv_type_long_double=no ../glibc-2.5/configure \
--host=sh4-linux --prefix=/root/sh4/tools/sh4-linux/ \
--enable-add-ons=linuxthreads --with-headers=/root/sh4/tools/include/ \
--disable-sanity-checks --disable-shared | tee sh4config.log
configureは成功するよ
makeすると・・・・
/root/sh4/tools/bin/../lib/gcc/sh4-linux/3.4.6/../../../../sh4-linux/bin/ld: cannot find -lgcc_eh
上のエラーが出てmakeが途中でストップ。
gcc-ehとはldによって呼び出されるもの?と思いました。
どのような役割があるのでしょうか?
gccコンパイルする時に生成されなかったのかな?
既存のshクロスrpmをインスコすればいいのですが、クロス環境の学習目的です。
参考書籍は「組み込みlinuxシステム構築」を読んでます
よろしくおながいいたします。
635:デフォルトの名無しさん
08/11/03 16:03:02
crosstoolとかcrosstool-NGのスクリプト読んでみるといいよ
636:デフォルトの名無しさん
08/11/03 16:41:20
>>634
make lib
637:デフォルトの名無しさん
08/11/03 17:26:06
URLリンク(svn.exactcode.de)
638:デフォルトの名無しさん
08/11/03 23:40:27
まだうまくいかないけど、参考になりました。
コンフィグオプションももっと調べないと・・・
639:デフォルトの名無しさん
08/11/12 20:15:10
gcc の引数って順番の依存あります?
gcc hoge.c mylib.a
と
gcc mylib.a hoge.c
ってかいたとき、Darwin の gcc だとどちらの書き方でも a.out ができるんですが、
Ubuntu の gcc だと、後者の書き方ではリンクエラーになるんです。
640:デフォルトの名無しさん
08/11/12 20:22:44
順序に意味はあります。
リンク時の名前解決において、先に現れたモジュールで未解決の名前を、
後で現れたモジュールで解決するので、これが逆になって、
先に現れたモジュールに定義があって、後から参照する形になると、
名前が解決できなくなります。
641:デフォルトの名無しさん
08/11/13 00:06:49
>>639
Darwinのgccはldとは別のリンカ使ってる。(dyld)
DarwinはELFやBSD a.out形式じゃないから。(Mach-O)
642:デフォルトの名無しさん
08/11/22 12:58:43
>>603-604
じゃあコンパイラとしての能力には深刻な問題があるわけではない?
643:デフォルトの名無しさん
08/11/22 18:48:12
>>642
pchの問題は4.3だと解決してるみたい。
644:デフォルトの名無しさん
08/11/25 20:34:44
OS CentOS4.6 i386
gcc 3.4.6
やりたいこと
binutils-2.10.tar.gz
gcc-2.95.2.tar.gz
glibc-2.1.3-armlinux.tar.gz
を使ってクロス環境を作りたい
bintilをビルドする時に
./configreでホストのタイプを設定したいのですが、Centの場合
--host=i386-unknown-linux
でいいのでしょうか?
645:デフォルトの名無しさん
08/11/25 20:42:29
binutilsとgccはとくにhostの指定はしなくてもいいけど
646:デフォルトの名無しさん
08/12/01 12:39:07
書くとすれば、i386-pc-linux-gnu だよな。
647:デフォルトの名無しさん
08/12/01 17:08:01
gcc -dumpmachine
648:デフォルトの名無しさん
08/12/18 01:48:00
OS:CentOS
コンパイルすると
無効なプリプロセスディレクティヴ #!
ってでるんだ 誰か解決策を教えてください。
649:デフォルトの名無しさん
08/12/18 02:09:29
エスパー求む
650:デフォルトの名無しさん
08/12/18 02:23:45
シェルスクリプトをコンパイルしてはいけません
651:デフォルトの名無しさん
08/12/18 02:28:22
実は1行目が#!ccだったりしてw
652:デフォルトの名無しさん
08/12/21 15:44:40
g++のコンパイルが異常に遅くなってしまってるんですが、
何がボトルネックになっているのかを調べる(コンパイラ自身のプロファイルみたいなの)
はありますか?
コンパイルしているのは、ユニットテスト的なテストプログラムで、
長さも100行程度です。ひたすら関数の結果をチェックしまくるみたいなもので、
マクロを使いまくっているんですがそれが原因かなぁ・・・
653:デフォルトの名無しさん
08/12/21 15:45:39
書き忘れましたが、その100行程度のユニットテストプログラムで、
コンパイルには3分くらいかかってます。
本体プログラムよりはるかに長い・・・orz
654:デフォルトの名無しさん
08/12/21 15:51:45
可能なら前半と後半で2つのモジュールに分けて、どっちで遅くなるか調べる。
それを繰り替えして突き止めるとか。最終手段かもだが。
655:デフォルトの名無しさん
08/12/21 16:01:17
-Eだとどれくらいかかってるんだろ?
656:デフォルトの名無しさん
08/12/21 16:08:56
1. -E, -S, -cでそれぞれの時間を確かめる。
2. cc1内部は-fdump-rtl-allで出力ファイルのタイムスタンプを見る
657:デフォルトの名無しさん
08/12/21 16:32:33
>>654 >>655 >>656
あざっす。いまからいろいろ調べてみます。
658:デフォルトの名無しさん
08/12/21 17:10:27
templateでたらいまわし関数みたいなものを作っているとかだったり。
659:デフォルトの名無しさん
08/12/21 17:21:19
>>658
テンプレートをガンガン使ってるなら、まぁ遅くなっても納得するんですが・・・
コンパイルしているプログラムが、
ASSERT_TRUE( .xxxx )
ASSERT_TRUE( yyyy )
みたいなものが延々と続いているだけのプログラムなので不可解なのです
660:デフォルトの名無しさん
08/12/21 18:25:36
time コマンドで実行時間を測定しました。
-c 81.34s user 12.30s system 97% cpu 1:35.78 total
-S 82.63s user 11.62s system 99% cpu 1:34.66 total
-E 0.36s user 0.17s system 99% cpu 0.533 total
それぞれ一回しかやってないのでちょっと揺れがありますが…
つまり-Eは一瞬で、asに時間がかかっているという解釈で正しいんでしょうか?
ひょっとしてプリプロセッサによってファイルが膨れ上がっているのかとも思いましたが、
他のファイルでも-E 後の行数はほぼ同じだったので、単純に行数が原因ではないようです。
(すべて 50k~60k行の範囲内)
次に-fdump-rtl-allを付けてコンパイルしようとしましたが…
ディスク領域不足でコンパイル中断しましたとか出る上に30分経ってもまだ終わらない…
661:デフォルトの名無しさん
08/12/21 18:30:50
アサートの数を減らしてみて
どこを減らせばどのくらい時間が変わるか見てみたら?
662:デフォルトの名無しさん
08/12/21 18:35:33
> つまり-Eは一瞬で、asに時間がかかっているという解釈で正しいんでしょうか?
どう見てもcc1だろ時間かかってるのは。
-Q ってオプションがあるので試してみ。
663:デフォルトの名無しさん
08/12/21 19:00:41
-Sの時間が-cよりかかってるってことは、コードが相当大きくなってる?
664:デフォルトの名無しさん
08/12/21 19:51:11
プリプロセスだけして出てきたコードはどれくらいになっとるかね
665:デフォルトの名無しさん
08/12/21 20:20:12
どんな最適化しているの?
でかいファイルでインタープロシージャルな最適化まで
やったら結構重くなるだろ。
666:デフォルトの名無しさん
08/12/21 20:34:10
>>663
これは誤差範囲だと思います。一回しか測定してないので
>>662
-Q を試してみます。
#if 0 したりしていろいろ測定してみました。どうも、ASSERT_XXXXの個数と
だいたい相関があるようなので、1つ1つのコンパイルが遅いような気配です。
マクロの中身を減らせないかどうか検討中です。
667:デフォルトの名無しさん
08/12/21 20:35:40
アサートマクロの実装がマズかったりすんじゃないのかね。意外と。
668:デフォルトの名無しさん
08/12/21 20:37:50
>>664
プリプロセス後のコードは50k行程度です。
一般的に見て多いのか少ないのかよくわからないですが、
他の、数秒でコンパイルが終わるような同列のソースファイルも
行数はさほど変わらないので、行数そのものは関係ない気がしています
>>665
autoconfまかせだったので、-O2の最適化がかかってました。
テストコードだし、-O0にしてみます
669:デフォルトの名無しさん
08/12/21 20:40:14
>>668
ヘッダファイルの部分を除いた行はどのくらい?
あと、マクロは常に1行に展開されるので、
単に行数だけ見るより、バイト数見た方がいいかもしんない。
670:デフォルトの名無しさん
08/12/21 21:24:47
>>660
システムタイム大きすぎ!ほとんどI/Oだろ。
-vでcc1の引数見て、テンポリファイルの中見てみ。
超巨大になっているに違いない。
もしかしてtemplate引数に正定数の荒しで特殊化爆発?
671:デフォルトの名無しさん
08/12/22 00:29:25
-pipe してみて改善するようなら、特殊化の嵐でオブジェクトサイズがとんでもないことになってて
I/Oで時間喰ってるんじゃない?コンパイル中にメモリとスワップがどうなってるか見てもいいかも。
今時のマシンでcc1plusに80秒以上とか・・・。gccのinsn-*.cのコンパイルはそのくらいかかってたけど。
672:デフォルトの名無しさん
08/12/22 08:34:32
gdbでさ、
struct foo;
struct foo { ... };
と構造体の前方宣言があると、先に見つけた定義を見てしまって構造体の中身を
print でダンプできず <incomplete type> になってしまうのだけど、結局
これって解決不能なの?
毎回同じ構造の別名構造体をダミーで仕込んで、変数ごとにキャストして
アクセスとかって超面倒なんだけど。
673:670
08/12/22 09:53:03
まさに的を射たと思ったんだが反応がない(ワラ
674:デフォルトの名無しさん
08/12/22 15:45:05
>>673
反応遅れましたが、前にも書いているとおりテンプレート一切使ってないんです。
(boost::scoped_ptrは使ってますが、それはほかの異常ない部分でも一緒なので)
特定のどこかが遅いということではなく、調子のってマクロを使いすぎて
ソースの量が爆発しているような気配です。
地道にマクロを削って最適化を抑止して頑張ってます。
675:デフォルトの名無しさん
08/12/22 23:50:26
>>672
ちょっと簡単な例でやってみたら別に問題ない。 具体的なサンプルコードよろ。
676:デフォルトの名無しさん
08/12/23 00:02:54
gdbはinfoのどこかに、関数のプロトタイプ宣言書くなら、
ファイルのはじめの方に書きなと書いてあって笑った記憶があるが…
677:デフォルトの名無しさん
08/12/23 00:10:56
>>675
具体的なコードはちょっと出すの難しい。Linuxの動作を
gdb -c /proc/kcoreで追いかけてたら途中で<incomplete type>になる構造体が
出てきたという経緯で、自分のコードじゃないから。
- URLリンク(stackoverflow.com)
- URLリンク(sourceware.org)
あたりがソースかな。gdb struct incomplete type でググると同様の話がゾロゾロ出てくる。
678:デフォルトの名無しさん
08/12/23 01:16:19
>>677
- URLリンク(sourceware.org)
1998年? お前バカか? そんな古い断片の情報で>>672みたいな結論出すなよ。
その状況は今のgcc/ldでは起こらない問題。 >>675というのはカーネルモジュールとか
特殊なリンク環境で起こるんじゃないか? あと、
- URLリンク(stackoverflow.com)
は前方参照のことは何も書いてないぞ。 本当に>>677で見たコードには前方参照があったのか?
単にopaqueな参照だったんでは?
679:デフォルトの名無しさん
08/12/23 11:23:39
>>678
古い記事を出してしまったのはすまない。
最近(2006年あたり)でも類似の話があるので出してしまったのだけど、
ちょっと込み入った話なので質問撤回します。お騒がせしてすみません。
680:デフォルトの名無しさん
09/01/18 15:18:11
EclipseからMinGWを呼び出してC言語のプログラムを書いているのですが、
"-ansi"オプションを指定しても、なぜかC99の機能が使えて困っています。
具体的には、配列の動的確保がなぜかできます。(↓のような機能)
int i = 10;
int array[i];
他のC99の機能(新しいコメント分の書式やfor文での変数初期化)は無効になっていますので
これはバグなんでしょうか?
ちなみにgccのバージョンは、「gcc (GCC) 3.4.5 (mingw-vista special r3)」です。
681:デフォルトの名無しさん
09/01/18 15:34:24
>>680
-std=c89