GCCについて part7at TECH
GCCについて part7 - 暇つぶし2ch390:デフォルトの名無しさん
06/10/20 18:22:23
>>389
ツンデレ?

391:389
06/10/20 18:41:30
>>390
今のgcjはツンデレどころかツンツン
#とくにWin32環境では…

392:デフォルトの名無しさん
06/10/23 00:41:56
スレリンク(tech板)l50
停止しました

393:デフォルトの名無しさん
06/10/23 07:53:02
gccとはちと離れますが、
gasでのIA32のニーモニックやオペランドの表記方法について解説した文書ないですか?

394:デフォルトの名無しさん
06/10/23 08:11:31
本でいいならCQ出版のx86アセンブラ入門
Webならググレ

395:デフォルトの名無しさん
06/10/23 18:32:24
ぐぐってもちゃんとしたのは出てこないな。サワリだけのページならあるけど。

396:デフォルトの名無しさん
06/10/23 21:48:43
>>393
URLリンク(mysearch.intel.com)


URLリンク(www.linux.or.jp)

> gasの欠点はgasがAT&T-syntaxを使っていることです。これは
> Intel-syntaxと大きく違っています。 DOSユーザーはほとん
> どがIntel-syntaxを使っています。


AT&T Assembly Syntax | Sig9
URLリンク(sig9.com)


がんがれ>>393

397:デフォルトの名無しさん
06/10/24 00:52:06
>>393
URLリンク(homepage1.nifty.com)
URLリンク(www.mars.sannet.ne.jp)

398:デフォルトの名無しさん
06/10/24 02:04:20
>>393
gas付属のinfoは?

399:393
06/10/24 04:46:38
>>396-397
ありがとうございます。
教えていただいたページを参考になんとかなりそうです。

>>398
私は英語がダメで……というわけでもないんですが
一遍見たのですがgasの文法しか書いてないと思ってしまってました。
ご指摘を受けてもう一度よく見直したらMachine Dependent Features
という節があってそこになんか書いてありますね(アセ
やっぱ英語ダメなのか。

400:デフォルトの名無しさん
06/10/25 14:48:44


401:デフォルトの名無しさん
06/10/25 14:54:58
>>400
ageてまでする話じゃないな

402:デフォルトの名無しさん
06/10/26 00:30:48
fURLリンク(gcc.gnu.org) に 4.3 ができてた。
よく知らないが、そろそろ 4.2 がリリースされるんかな。


403:デフォルトの名無しさん
06/10/26 00:34:07
へぇ、branch切ったんだ。
URLリンク(gcc.gnu.org)
魅力的な要素があまり無いなぁ。

404:デフォルトの名無しさん
06/10/26 03:15:11
>>401


405:デフォルトの名無しさん
06/10/26 03:59:43
えぇっ、フリーのOpenMPはでかいんじゃないのかいな。

ていうかなんでfastjar消されるの?

406:デフォルトの名無しさん
06/10/26 04:44:29
所詮ただのZIPだから。

407:デフォルトの名無しさん
06/10/26 15:14:53
やっぱそうだったんだorz

408:デフォルトの名無しさん
06/10/28 13:28:01
>>405
はげどう。
>>403 はこのままだとマルチコア時代を生き抜けないぞ。


409:デフォルトの名無しさん
06/10/28 19:20:42
ただでさえ4.*はバージョンが古くないと問題ないはずのソースがコンパイルできなかったり
まさに発展途上だからなぁ。

410:デフォルトの名無しさん
06/10/29 02:50:55
安定してるバージョンはなに?

411:デフォルトの名無しさん
06/10/29 07:50:12
3.4.4

412:デフォルトの名無しさん
06/10/29 18:15:19
3.4.6が3.*の最終版だがffdshowの改良版がコンパイルできないそうだ。
ffdshowの改良版がまともにコンパイルできるのは4.0.2”だけ”で
4.0.1でも4.0.3以降でもダメらしい。
つまり4.*はもちろん、もう更新されない3.4.6ですら未完成な部分がある。
修正するガッツを持っている人間はネットをググった程度じゃ出てこない。

413:デフォルトの名無しさん
06/10/29 18:20:42
>>412
ffdshowの改良版とやらの方の不備ではないのか?

414:デフォルトの名無しさん
06/10/29 18:21:00
>>412
そもそもGCCのコードを弄れる奴が世界に何人いるかだ。

415:デフォルトの名無しさん
06/10/29 19:20:10
gccのコードほど複雑怪奇なものはないと思うんだが。

416:デフォルトの名無しさん
06/10/30 00:59:12
>>414
CygwinとMingwの中の人なら平気で弄ってるよな。いや、平気じゃなくて根性かもしれんけど。

417:デフォルトの名無しさん
06/10/30 12:45:43
コンジョだコンジョ

418:デフォルトの名無しさん
06/10/30 22:05:16
カスミン懐かしい…

って板違いだな

419:デフォルトの名無しさん
06/10/31 21:18:28
参考までにffdshowの改良版
svn co URLリンク(svn.sourceforge.net) ffdshow-tryout

作ってる人たち自身がGCCなら4.0.2じゃないとダメと言ってるからソースに問題はないと思うんだが。
ちなみに3.4.6ではInternal Compiler Errorが出てコンパイルできなかった。(/src で make)

420:デフォルトの名無しさん
06/11/01 07:39:23
>>412
>つまり4.*はもちろん、もう更新されない3.4.6ですら未完成な部分がある。
この結論がおかしい。最後の数パーセントを完璧にするには数百倍の努力を必要とする。



421:デフォルトの名無しさん
06/11/01 08:13:53
別にその結論自体はおかしくないと思うけど

422:デフォルトの名無しさん
06/11/01 09:07:53
そっか、ならよかった

423:デフォルトの名無しさん
06/11/01 14:50:50
>>420の文の意味がよく分からん。
残り数%の未完成が判明しても最終版は完成とみなすの?

424:デフォルトの名無しさん
06/11/01 14:58:50
>>423
たぶん、「ですら」ってとこに違和感感じてるんじゃないの?
完璧にするのは長時間かかるんだから、もちろんあるだろうということで。

425:デフォルトの名無しさん
06/11/01 18:23:24
俺は普通に読んで「ですら」ってのは「完璧じゃないんですよということを強調」する意味で
特に違和感ないと思ったんだが。
「結論がおかしい(=間違ってる)」というのが何を意味するのか俺も分からん。
「もちろんあるだろう」ならそのまま「そりゃそうだろ」で済むからそれは違う気がする。

文系じゃないので深読みはしなかった。国語苦手だよ。

426:デフォルトの名無しさん
06/11/01 22:19:12
coutで文字列を出力した後にwcoutでワイド文字を出力すると文字化けする。
逆もそう。gcc4.0.2(vine3.2)。

うちの環境だけ?

427:デフォルトの名無しさん
06/11/01 23:32:21
具体的なコードでくれ

428:デフォルトの名無しさん
06/11/02 01:28:42
>>423
gccくらいのサイズのソフトウェアは完成することはない。

429:デフォルトの名無しさん
06/11/02 02:00:49
どれくらいのサイズのソフトウェアなら完成しますか?

430:デフォルトの名無しさん
06/11/02 02:18:52
>>425
「ですら」は「容易であるのにも関わらず」というニュアンスを持っているけど、
>>423 は「本当は容易じゃないんだぜ」って事を言いたいんじゃないかな。

>>412 は、機能追加が無いから 4.* よりは「容易であるのにも関わらず」
という話だから、用法を間違ってる訳じゃないんだけどね。

>>429
「完成したソフトウェア」を定義出来ないから、サイズに関わらず無理という
結論が返って来るに 100 ルピー。

431:デフォルトの名無しさん
06/11/02 03:39:32
>「ですら」は「容易であるのにも関わらず」というニュアンス
どこの国のニュアンスだよ
URLリンク(dictionary.goo.ne.jp)



板違いだからよそでやれ


432:デフォルトの名無しさん
06/11/02 06:43:05
ですらー総統万歳

433:デフォルトの名無しさん
06/11/02 08:23:34
Wikipediaの記事酷いな
悪意を持った半可通ほどタチの悪いもんはない

434:デフォルトの名無しさん
06/11/02 16:36:54
質問します
ある統計データのグラフを画像として出力するプログラムを作りたいのですが、
GCCで利用可能な良いライブラリがありましたら教えて下さい。
形式はjpeg、gif、pngの何れかに対応しており、文字列を画像に出力可能なものを探しています。
よろしくお願い致します。

435:デフォルトの名無しさん
06/11/02 17:52:30
gnuplot使えばいいんじゃ

436:デフォルトの名無しさん
06/11/03 06:32:23
gnuplotのコマンド出力してくれるライブラリが欲しいです

437:デフォルトの名無しさん
06/11/03 08:16:04
というか、スレ違いなんだが、
gnuplotは、デバイス非依存にするために、term抽象化をしているから、
*.trmで定義されているtermモジュールを、切り替えて使うようにすればOK。

$(GNUPLOT)/term/README読め。

話の続きがしたければ、くだ質スレ行け。

438:デフォルトの名無しさん
06/11/03 16:32:30
popenで十分じゃない?

439:デフォルトの名無しさん
06/11/05 10:56:17
>>433
むしろ、このスレの住人には神が何人もいるわけで、
このスレで少し議論して書き直してもいいと思う。


440:デフォルトの名無しさん
06/11/05 16:30:46
ada使ってる猛者いる?

441:デフォルトの名無しさん
06/11/05 18:10:03
指先が擦り減るから止めた

442:デフォルトの名無しさん
06/11/05 19:34:09
>>440
スレリンク(tech板)

443:デフォルトの名無しさん
06/11/05 19:57:43
歴史あるスレですね
書き込んでスレを進めるのがもったいなく思います


444:デフォルトの名無しさん
06/11/06 11:28:46
gcc(g++)で特殊化されてないテンプレートに特殊化されたテンプレートを
定義する方法はありませんか?

VCやBCBでは非標準の機能も使えてしまうわけで、g++でもそういう機能を
有効にするようなオプションなりなんらかの方法を探してます。
バージョンはgcc4系を目標にしてます。

445:434
06/11/06 15:06:33
>>435,437,438
返信遅くなりましたが、有難うございます
gnuplotでの作成を検討したいと思います

446:デフォルトの名無しさん
06/11/10 02:49:15
質問です

linux上で静的リンクでコンパイルしたつもりなのですが、
glibcに依存(?)しており、sharedな状態となっているためか、
プログラムが変なところで終了するようになりました。

glibcに依存しない、完全に独立したバイナリを作成するには
どうしたらよいでしょうか?
ポインタなど頂けると嬉しいです


lddで対象プログラムを参照するとstaticだと言われるんですが、
コンパイル時に以下のようなワーニングが出ます。

warning: Using 'gethostbyname' in statically linked applications requires
at runtime the shared libraries from the glibc version used for linking

/usr/lib/libc.aは確かにgethostbynameのシンボルを保持しているのですが、
libc.aをldするとglibcに依存するので完全に独立させたいです


447:デフォルトの名無しさん
06/11/10 11:01:20
libcにはexit(2)など、
プログラムの実行に必須の関数(およびシステムコールインターフェース)が入っているので、
なしでプログラムを実行することは不可能です。

あなたがlibcの代わりのシステムコール、main()スタブを書けば問題ないですが、
質問内容から言ってもそれは到底無理でしょう。

448:デフォルトの名無しさん
06/11/10 11:01:58
gethostbyname()を他から持ってくる。

449:デフォルトの名無しさん
06/11/10 23:02:02
libc,libgcc抜きの環境でやってたときは結構面白かった。
車輪の再開発はやっぱり楽しい。

450:デフォルトの名無しさん
06/11/11 10:38:09
>>449
libgcc抜きは相当キツいだろうな・・・

451:デフォルトの名無しさん
06/11/11 17:43:33
ちょいと質問ですよ。

手元のgcc(for cygwin)は-m64がないのだけれど、-m64オプションを指定したときsizeof(int)はいくつになるの?
LinuxとSolarisのそれぞれについて、教えてくれると助かります。

452:デフォルトの名無しさん
06/11/13 18:25:13
int main() {
static int foo();
return foo();
}
static int foo() {
return 0;
}
上記コードはgcc 3.4.4ではコンパイルできますがgcc 4.0.3ではできません。
以下はgcc 4.0.3のエラーログです。

test.c: In function ‘main’:
test.c:2: error: invalid storage class for function ‘foo’
test.c: At top level:
test.c:5: error: static declaration of ‘foo’ follows non-static declaration
test.c:3: error: previous implicit declaration of ‘foo’ was here

これはgcc 4.0.3での仕様変更でしょうか?
サンプルソースの記述方法は標準仕様(ANSI CないしC99等)に違反していますか?

453:デフォルトの名無しさん
06/11/13 21:05:25
こういうの萎えるけどまぁしゃーない。漏れも暇だ。

> これはgcc 4.0.3での仕様変更でしょうか?
だろうね、望ましい(厳しい)方向の。
> サンプルソースの記述方法は標準仕様(ANSI CないしC99等)に違反していますか?
厳密に違反(?)かは分からんが、

> static int foo();

この位置じゃmain()の中だけでしか宣言が有効じゃない。
しかも引数にvoidがないからPost-ANSIスタイルじゃない(==K&R)。

-pedantic -std=c89 -W{all,strict-prototype}
とかとりあえずやっとけ。

454:デフォルトの名無しさん
06/11/13 22:15:02
int型で扱える整数の最大値はいくつですか?
PC-9801時代のC言語入門しか持ってないんですが
printf ("%d\n",123456789);
としても普通に表示されるようです。
この本だとエラーになる。


455:デフォルトの名無しさん
06/11/13 22:35:09
処理系による。limits.hでもお読みなさい。

456:454
06/11/13 22:35:36
原始的に一桁ずつ変更してみたら
2147483647でWarningが出なくなったけど、これで合ってるのかな…

457:デフォルトの名無しさん
06/11/13 22:36:36
>>454
sizeof(int)の値をnとして、(2^n)/2-1だよ。
intのサイズが4バイトなら2147483647ね。

458:デフォルトの名無しさん
06/11/13 22:39:35
俺のところでは、
/* limits.h */
#define __INT_MAX__ 2147483647

459:454
06/11/13 22:40:58
ありました!

# define INT_MAX 2147483647

460:457
06/11/13 22:45:37
間違えたwww
nは8をかけてビット単位にしてね。

461:454
06/11/13 22:59:30
>>457>>460
ありがとうございます。
しかし私が理解できる数学は中学校2年レベルまでです…orz

462:デフォルトの名無しさん
06/11/13 23:25:09
>>457 そんな決め付けはよくないな。

463:デフォルトの名無しさん
06/11/13 23:43:11
>>461
457はそれくらいの数学がわかれば十分理解できるはず。
(Cではxorだが)ここでは^が冪乗の意味。2 ^ nは2のn乗ということ。

464:デフォルトの名無しさん
06/11/14 01:18:45
m桁のn進数の数値が表せる最大の数は(n^m)-1だろ?

465:デフォルトの名無しさん
06/11/14 01:23:07
>>464
しかしここでは2の補数による符号付き整数型を考えているので457。
ただ2^(n-1) - 1と書いたほうがいいのではと思うがな。

466:デフォルトの名無しさん
06/11/14 01:23:53
>>464
int の有効桁数は sizeof(int) では確定しない。

467:デフォルトの名無しさん
06/11/14 07:39:54
intを格納するのにパディングが必要になる処理系というのも
考えづらいけどね。

468:デフォルトの名無しさん
06/11/14 13:08:35
そりゃただの想像力不足だろ。
ILP64のように、intがマシンにとって最も自然なワードという仮定は
もはやプラットフォームによっては崩れてる。

469:デフォルトの名無しさん
06/11/14 13:25:10
>プラットフォームによっては
>プラットフォームによっては
>プラットフォームによっては

470:デフォルトの名無しさん
06/11/14 23:29:39
int はそのプラットフォームにおいてもっとも高速であること見込めるサイズと定義されているのに(w

471:デフォルトの名無しさん
06/11/15 00:19:27
>>470
はつみみです。
何のどこに定義されているのですか?

472:デフォルトの名無しさん
06/11/15 01:20:42
どっちにしろ、C99からはint8_tとかつかえばおk

473:デフォルトの名無しさん
06/11/15 20:34:20
>>470
とするのが理想だが 定義じゃねーYO!

474:デフォルトの名無しさん
06/11/15 23:23:11
>>472
int_fast8_tのことかぇ?

475:デフォルトの名無しさん
06/11/16 11:21:19
stdint.h

476:デフォルトの名無しさん
06/11/19 20:42:26
; Linux 板から引っ越してきました。

質問です。

/lib/ld.so の様に,実行も出来る共有ライブラリを作るには GCC に対してど
ういうコマンドを発行すれば良いのでしょうか?

% file /lib/ld-2.4.so
/lib/ld-2.4.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped
% /lib/ld-2.4.so
Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
You have invoked `ld.so', the helper program for shared library executables.
...

477:デフォルトの名無しさん
06/11/20 09:15:42
つ ld-*.soのソースとMakefile

478:gcc4
06/11/23 17:18:39
みんな -fpmath は sse にしてる?


479:デフォルトの名無しさん
06/11/23 22:01:05
ええ


480:デフォルトの名無しさん
06/11/25 10:16:27
はやくgcc-4.2こい~こい~

481:デフォルトの名無しさん
06/11/25 13:50:55
>>480
4.2のウリはなに?

482:デフォルトの名無しさん
06/11/25 13:52:01
ニダ!

483:デフォルトの名無しさん
06/11/25 14:56:18
>>481
openMPのサポートじゃないの?

484:デフォルトの名無しさん
06/11/25 15:48:58
>>481
ここ読め、カス!
URLリンク(gcc.gnu.org)

forward propagation passが入るよー。

485:デフォルトの名無しさん
06/11/25 17:10:34
OpenMPは庶民にはあまり関係なさそうだな。
>>481を見ると、他の変更はあまりなさそうですね。



486:デフォルトの名無しさん
06/11/25 20:47:01
RTL での forward propagation は 4.3 からじゃない?

487:デフォルトの名無しさん
06/11/26 01:09:36
GCCのソースを読むのは疲れるぞい。

488:デフォルトの名無しさん
06/11/26 08:42:21
ETFは少し下げてっるぽい。

489:デフォルトの名無しさん
06/11/26 10:22:49
forward propagationってコピー伝播のこと?

490:デフォルトの名無しさん
06/11/26 11:02:19
>>489
URLリンク(gcc.gnu.org)

491:デフォルトの名無しさん
06/11/26 15:15:20
>>490
さんきゅ。あってるみたいだね。
しかし、今まで入ってないのが不思議なくらい基本的な最適化だが…

492:デフォルトの名無しさん
06/11/26 16:10:16
伝搬の方向と、解析の方向の違い。

493:デフォルトの名無しさん
06/11/26 18:08:20
ObjC2.0っていつサポートされる予定なの?

494:デフォルトの名無しさん
06/11/26 18:16:54
>>491
その辺はopen sourceの限界だろうな。
商用コンパイラなら常識だが、フリーのものは思わぬところで手が抜かれている

495:デフォルトの名無しさん
06/11/26 19:13:26
>>489
違う。

496:デフォルトの名無しさん
06/12/10 23:09:58
質問なんですが、gccで、
動的ライブラリのSOファイルにiostreamをインクルードすると、実行時に、
undefined symbol: __dso_handle
ってエラーがでるんですけど、なんか対処法ないですか?

$ g++ -Wall -g3 -c test.cc
$ g++ -shared -nostartfiles -o test.so test.o

こんな感じでコンパイルしてます。

497:デフォルトの名無しさん
06/12/11 00:30:11
ぐぐると出てくるぞ
URLリンク(d.hatena.ne.jp)


498:デフォルトの名無しさん
06/12/11 00:59:42
>>497
ありがとうございます。
extern void* __dso_handle;
って宣言するってことですかね?ちょっと試してみます!

499:デフォルトの名無しさん
06/12/17 13:20:01
gdb でマクロ参照したい時 gcc -g3 しますが、

enum hoge {
 HOGE_A = 123,
#define HOGE_A HOGE_A
 ...

というコードのデバッグで HOGE_A を参照できず困ってます。
macro expand HOGE_A すると 123 ではなく HOGE_A になる上、
実コードで enum hoge i = ... のように使われてないので、
この enum/macro 値の実値がデバッグセッション中からまったく
取れないのです。

いまはやむなくヘッダ grep して毎回探し回ってるんですが、
実は gcc/gdb 的にちゃんと参照する方法があったりしないでしょうか?


500:デフォルトの名無しさん
06/12/17 13:56:20
print出来ないの?

501:デフォルトの名無しさん
06/12/17 14:01:27
あ、出来ないわ。
debug情報に含まれてないね。> hoge, HOGE_A
リテラルになってる。

502:デフォルトの名無しさん
06/12/17 14:05:16
そうなんですよ。

#define HOGE_A 123

ならコード中で使ってなくても gdb から見えるのに、

enum { HOGE_A = 123 }

だと何と見えなくなってしまって。gcc/gdb に手を入れないと対応不能?


503:デフォルトの名無しさん
06/12/17 17:38:34
Symbol tableにないから無理だね。

504:デフォルトの名無しさん
06/12/17 17:44:58
やぱりそうですか。
マニュアル見てると -feliminate-unused-debug-symbols とか -gfull とか
ちょっと関係してそうなものがあるので、定義を見ただけで突っ込むように
できないかもう少し見てみます。




505:デフォルトの名無しさん
06/12/18 00:08:18
上、できてるんで報告しときます。

 gcc -fno-eliminate-unused-debug-types -ggdb3 foo.c

でデバッグターゲット中にない enum などの型情報もデバッグセッションで
参照できるようになりました(-ggdb3 -> -g3 でもおけ)。

これで pt enum hoge とか p HOGE_A+0 とかもばっちりです。

506:デフォルトの名無しさん
06/12/18 12:38:59
good bad know how

507:デフォルトの名無しさん
06/12/20 21:10:35
gdb関連で質問なんですが、ロードしたプログラムのテキストセグメントに
オンメモリでパッチをあてて関数のNOP化などをしたいのですが、そのまま
run しようとすると Text File busy とか言われてしまいます(Linux)。

一回 gdb -write で書き換えたバイナリを保存して、gdb を再起動して
再実行する場合は問題ないのですが、書き換え→保存→再実行→元ファイル
復元→・・・と試行錯誤するのが面倒なので、オンメモリのイメージだけ
書き換えて実行したいです。これは gdb でできるのでしょうか?

508:デフォルトの名無しさん
07/01/04 11:45:29
アーキテクチャも分らないのに

509:デフォルトの名無しさん
07/01/04 20:19:52
アーキテクチャ関係なくね?

510:デフォルトの名無しさん
07/01/06 05:56:19
>>509
ちげーよ
ある仮定を1つ言ってないだけさ

511:デフォルトの名無しさん
07/01/31 22:46:48
fURLリンク(gcc.gnu.org)


512:デフォルトの名無しさん
07/02/07 19:18:53
ううむ、4.2はまだリリースされないのか。4.1.2と同時リリースなのか?

513:デフォルトの名無しさん
07/02/07 22:42:13
4.1.2の後に4.2pre→4.2でしょ。
4.2はまだ1月ぐらいかかるんじゃないかな…

514:デフォルトの名無しさん
07/02/08 23:17:12
>>512-513
もうすでにIR版で6.0が出てるわけだが
URLリンク(2chart.fc2web.com)

515:デフォルトの名無しさん
07/02/09 02:34:15
514はたぶんものすごいバカ

516:デフォルトの名無しさん
07/02/12 03:09:56
>>515
お前も釣られたんだな・・・

517:デフォルトの名無しさん
07/02/12 03:35:15
まあもちつけ、兄者。
釣りにはスルーで対抗せよ。

518:デフォルトの名無しさん
07/02/14 18:27:21
GCC 4.1.2 has been released.
URLリンク(gcc.gnu.org)

やっと出た…
さっさと4.2こーい

519:デフォルトの名無しさん
07/02/15 10:43:02
4.2からOpenSSLやFirefoxが起動しない。

OpenSSLのMLみりゃ載ってるけど、strickt-aliasingか何のためか詳しく分からんが
関数ポインタのキャスト(かな?)で禁止になった次項が増えたらしい。
これが検出されたら、そこに強制終了コード埋め込まれる。

詳しい人、日本語で解説よろぴく。

520:デフォルトの名無しさん
07/02/15 10:56:41
>>519
どれかアーカイブで示してくれるとうれしいんだが。
URLリンク(www.openssl.org)

521:デフォルトの名無しさん
07/02/15 18:18:38
URLリンク(marc.theaimsgroup.com)
URLリンク(gcc.gnu.org)
あたりかな?
cast_via_void_fptr()がダメになったらしいけど、素人の私にはさっぱりorz

522:デフォルトの名無しさん
07/02/16 02:22:29
古い (ANSI 以前の知識ベースの) C プログラマがこういう行儀の悪いコード書くんだよ
そういう奴らを一掃するためにもがんがんエラーにしてくれ

523:デフォルトの名無しさん
07/02/16 02:22:42
Cではコンパチブルじゃない型のaliasを禁止している。
それを実行時に察知してabort()する範囲が増えた。

524:デフォルトの名無しさん
07/02/16 03:51:47
errorじゃなくて abortするのがなあ。まあ、warningもでるけど。


525:デフォルトの名無しさん
07/02/16 09:03:27
Buffer overflowなんかの絡みもあるんじゃないのか?
一昔前じゃ、実行時チェックなんてあり得ないセンスだけど。

526:デフォルトの名無しさん
07/02/16 21:01:27
なんで実行時なんだ?

527:デフォルトの名無しさん
07/02/20 16:40:47
4.2の出来が悪すぎるんでどうしようか迷っているらしい
URLリンク(gcc.gnu.org)

528:デフォルトの名無しさん
07/02/20 17:30:59
4.1.2も3.4.6に比べて大分性能悪くなってた
4.0系は試してないから分からないけど

529:デフォルトの名無しさん
07/02/21 04:00:01
-fwhole-compile --combine って C++ で使えない?
1クラスだけの簡単なサンプルでやってもメンバ関数が undefined reference に
なってしまうんだが。v4.1.2、ちなみに C なら問題ない。

仕方ないので、単体ファイル毎に -fprofile-generate/use して自分ツールビルド
してみたら 1% 速くなたw
まあこれでもいっか、と MinGW で同じようにやったら internal compiler error orz

530:デフォルトの名無しさん
07/02/21 04:13:03
>>529
書き間違い済まぬ -fwhole-program っすね

531:デフォルトの名無しさん
07/02/21 04:15:13
今試したらできなかった
-fwhole-compileじゃなくて-fwhole-programだったけど

532:デフォルトの名無しさん
07/02/24 22:35:57
進歩した部分もあれば後退した部分もあるから gcc-4 はまだまだ主流になれそうにないね。

最適化パスが Tree SSA と RTL で重複し始めてるような気もするが?

533:デフォルトの名無しさん
07/02/25 16:08:15
>>528
4.0はもっとひどかった。4.1になってちょっとマシになった。

534:デフォルトの名無しさん
07/02/26 03:37:49
SPECの結果って最近どうなの?

535:デフォルトの名無しさん
07/02/26 23:17:10
2CPU構成で1CPUしか使ってくれないソフトをGCC4.1でOpenMPを有効にしてmakeすれば2CPU使ってくれるのでしょうか?
GCCマスターのお知恵をおかしください・・・

536:デフォルトの名無しさん
07/02/26 23:24:16
>>535
そうはいかんざき。
OpenMP用にソースにちょっと手を入れないといけない。


537:デフォルトの名無しさん
07/02/26 23:41:18
1位3.3系
2位3.4系
3位4.1系

538:535
07/02/26 23:42:09
>>536
アホらしい質問すいません。
ありがとうございます。
SolarisやLinuxでnbenchというCPUの性能を測るものがあって、これを複数CPUで動かして計測したいのですが、1CPUでしか動いていませんでした。
オプションに-fopenmpをつけてmakeすれば複数CPU対応版になってくれれば良いな、と思った次第です。
世の中そんな甘くないのですね。
SolarisやLinuxで複数CPUに対応したCPUベンチマークソフトがあれば良いのですがね。

539:デフォルトの名無しさん
07/02/26 23:54:46
横から失礼します。
-ftree-vectorizeで並列化した場合は、マルチCPUで効果があるのでしょうか。

540:デフォルトの名無しさん
07/02/27 01:22:01
>>539
vectorizeはSSEを使った高速化じゃないの? だとすれば、一つのコアしか使わないと思われ。

>>538
プラグマで、OpenMPの対象とするforループを指定してやるとかすればいい。

541:デフォルトの名無しさん
07/02/27 04:33:48
目的がよく分からないんだけど,元々1CPU用のベンチを自分で適当に弄って
意味あるの? 元の製作者がやるんだったらともかく

542:デフォルトの名無しさん
07/02/27 10:03:51
>>538
そんなあなたに、Intel compiler。
-parallelオプションで、ある程度自動で並列化してくれる。
非商用目的なら無償で入手できます。

543:デフォルトの名無しさん
07/02/28 03:50:56
>>539
ubench とか sysbench とか。
んでも、1 個のベンチマークツールだけに頼らない方が良いよ。
それと、なるべく自分が想定しているアプリに近い負荷で試した方が良い。
アプリに付属しているベンチマークツールを使うとかね。
マイクロベンチマークは落とし穴がいっぱいあるから、きちんと統計情報も
取得した方が良いよ。

544:デフォルトの名無しさん
07/03/06 07:21:59
Mingwが3.4.6出す夢を見た。

545:デフォルトの名無しさん
07/03/11 13:00:40
gcc 4.2の正式リリース予定日はまだ決まっていないのでしょうか?

546:デフォルトの名無しさん
07/03/11 15:01:01
3月中旬

547:デフォルトの名無しさん
07/03/12 14:12:52
gcc-4.2って>>527の話があったけど、どうなったの?
3月中旬にリリースってことは、結局そのままリリースするのかな?

548:デフォルトの名無しさん
07/03/12 15:17:29
その様だ
明日RC1が出る

GCC 4.2.0 RC1 Status
URLリンク(gcc.gnu.org)

549:デフォルトの名無しさん
07/03/12 15:37:34
となると、4.2はスルーしたほうがよさげだなぁ

550:デフォルトの名無しさん
07/03/12 18:34:29
>>547
URLリンク(d.hatena.ne.jp)
3/4 に続行って出てた

551:デフォルトの名無しさん
07/03/12 19:50:02
>>550
Thanks
URLリンク(gcc.gnu.org) のステータスレポートですな
んでヲレは当分は4.1のままでいることにしますだ

552:デフォルトの名無しさん
07/03/13 02:58:57
現時点での最強のgccを教えてください

553:デフォルトの名無しさん
07/03/13 03:03:20
gcc

554:デフォルトの名無しさん
07/03/15 09:37:39
ecc

555:デフォルトの名無しさん
07/03/15 11:17:05
.2.95.3
に決まってる

556:デフォルトの名無しさん
07/03/15 15:25:25
あれはよかったのう…
どこで間違ったんですかねえ



557:デフォルトの名無しさん
07/03/15 19:38:12
長い間バージョンが上がらなかった反動で
出来がいかに糞でもバージョンが上がればいいと思い込んでしまったところ。

558:デフォルトの名無しさん
07/03/15 21:31:36
Makefileについてなんですが、現在以下のようなフォルダ構成でsrc以下
にソースファイルを置いています。

┬src
├obj
└run

Makefileはrunにおいていて、makeコマンドを実行したら.oはobjに置かれ、
実行ファイルだけrunにできて欲しいのです。

しかし、makeコマンドを実行した場所に一緒に.oができてしまい、イライラしています。

Makeファイルはrun以下に置いて、.oはobj以下に作成されるというような解決方法は
ないでしょうか?

559:デフォルトの名無しさん
07/03/15 22:58:01
>>558
マニュアル読め。
そんなの質問するようなことか?

560:558
07/03/15 23:48:26
MakefileでVPATHとOPTIONってどうやって両方とも有効にすればいいんでしょうか?

VPATH = ../src
OPTION= -D_NDEBUG

abc.o : a.c b.c c.c
#[tab]$(CC) $(OPTION) -c $@

こんな感じでやっても、OPTIONが有効になりません。
かといって、#を削っても今度はVPATHが有効になりません。
どなたか、お助けを。

561:デフォルトの名無しさん
07/03/16 00:22:31
>>558
GNU make のパターンルールくらい嫁。基本じゃん
$(target): $(objects)
$(objects): ../obj/%.o: ../src/%.c


562:389
07/03/16 10:34:15
>>558
gccの話をしれ

563:デフォルトの名無しさん
07/03/16 15:43:52
質問

転職してVisualC++を使う開発からGCCを使う開発に変わるんだが
VC++のようなIDEって無いの?
GCCとViが基本?

564:デフォルトの名無しさん
07/03/16 15:50:19
emacs


565:デフォルトの名無しさん
07/03/16 15:51:20
>>563
eclipse+cdtとかkdevelopとか

566:デフォルトの名無しさん
07/03/16 15:52:44
>>563
スレリンク(linux板)


567:デフォルトの名無しさん
07/03/16 16:19:25
皆さんThx!


568:デフォルトの名無しさん
07/03/16 21:24:45
いまさらですがMakefileの話題はこちらへ

make makes many problems
スレリンク(tech板)

569:デフォルトの名無しさん
07/03/18 02:50:56
>>548の後、相次いでバグが発見されたために延ばし延ばしになっていたRC1がようやく出ました。

GCC 4.2.0 RC1
URLリンク(gcc.gnu.org)

ヤレヤレ…

570:デフォルトの名無しさん
07/03/18 06:35:48
なにがヤレヤレ…なの?

571:デフォルトの名無しさん
07/03/18 13:01:22
>>570
>>569 のメール読めばすぐ分かるだろ.
> we still have quite a number of GCC 4.2.0 P1s which concern me.

572:デフォルトの名無しさん
07/03/18 13:15:00
バグの出方を考えると、どう考えてもリリース品質とはいえないシロモノなのに、
RCにしちゃっていいの? 4.1と比べて、あまり最適化周りの性能向上もしていない
ようだし。

573:デフォルトの名無しさん
07/03/18 13:24:45
性能向上、どころか性能低下がかなり激しくて問題視されてる。
4.3は期待出来そうなんだが…
まぁこの経験を生かしてこれからはより良い開発プロセスを作ってほしいね。

574:デフォルトの名無しさん
07/03/18 20:12:54
4.xと3.xの比較ではどんなにググっても3.xがいいという人しか見つかりませんが
4.xでしかコンパイルできないソースを書かない限りは3.xでFAなんかいな?

575:デフォルトの名無しさん
07/03/19 01:05:34
3.4以降が4.xになったんじゃないの。
どうせ最高性能は2.95なんだから、最新がほしけりゃ4シリーズを使うべき
だと思うけどね~。まあ、lvalue assignmentの問題とか致命的な人には
致命的なんだろうけどさ。

576:デフォルトの名無しさん
07/03/19 01:55:31
C言語しか使わない人は2.95でもいいかもしれないけど、
C++ 使う人には思い出したくない過去な気が

577:デフォルトの名無しさん
07/03/19 01:56:12
Linuxのメジャーどころのディストリビューションが3.x以降に移行し、
FreeBSDも5以降は3.xに移行してから結構時間が経ってしまっている現状、
2.95.xではmakeが通らないアプリも結構あるからなぁ。

ってことで、Solarisで長いこと付属のcompanion CDに入っていた2.95.3を
使ってきたけど、SunFreewareの3.4.6に入れ替えた。

にしても、4.2がリリースされたら、4.1から入れ替えちゃって4.1がつかえなくなる
ディストリビューションがありそう。Debianの場合、パッケージが用意されているのは
2.95、3.3、3.4、4.1なので、4.2がリリースされても大丈夫だろうし、FreeBSDのportsも
そんな感じだから、ヲレ的には無問題なんだけど。

578:デフォルトの名無しさん
07/03/19 03:35:37
>>577
Solaris 10 以降だったら /usr/sfw/bin の下に GCC 入ってるよ。
バージョンが幾つだったか忘れたけど。

579:デフォルトの名無しさん
07/03/19 12:02:31
>>576
C++はそうだね。3.x以降で劇的に変わっているし。
あと、amd64などの新しいアーキテクチャへの対応もあるし。

にしても、>>575のいう最高性能が2.95っていう理由がよくわからんのだけど。
まさかコンパイル速度だけを見ているわけじゃないよね?

580:デフォルトの名無しさん
07/03/19 16:05:58
見ているわけだろ。

581:デフォルトの名無しさん
07/03/20 15:55:40
コンパイル速度しか見ていないヤシ、以前UNIX板のgccスレにも湧いていたな

582:389
07/03/20 17:11:47
コンパイル速度とコードサイズの小ささは2.95のがよかったな。
実行速度は比べたことないんでしらんけど。
まぁ C99 や C++ や他のフロントエンドを考えると今更戻る気はしないな

583:デフォルトの名無しさん
07/03/20 17:57:44
実行速度は自分が使うやつでは3.3が一番速かった
4.1は姫野ベンチってやつでは-O2以上にすると何故か3.4に比べて2倍くらい遅くなってた
-O1とかでもそれまでと比べて遅くなってるけど

584:デフォルトの名無しさん
07/03/21 09:43:40
姫野ベンチのソースコードは公開されてるの?

585:デフォルトの名無しさん
07/03/21 10:57:09
されてるよ。ググればトップに出て来るけど。

586:デフォルトの名無しさん
07/03/21 14:45:25
fortranがベースなのか?

587:デフォルトの名無しさん
07/03/21 17:59:33
ご自分でどうぞ。

588:デフォルトの名無しさん
07/03/21 20:22:54
>>586
Fortranベースじゃないかな。トップページに、Cの配列宣言をFortranに合わせた、って記述が。
言語の特性上、だいたいベンチ系はFortranベースのものが多いし。

589:デフォルトの名無しさん
07/03/23 15:52:02
下のページを試しているのですがgcc時にエラーが出てしまいます
URLリンク(www.hellohiro.com)
jni.hがないと言われるのですが、lsで確認したところ存在します。
どこがまずいのでしょうか・・助けてください。

bash$ gcc -shared -l/usr/java/jdk1.6.0/include/ -l/usr/java/jdk1.6.0/include/linux/ HelloWorldJNI.cpp -o libHelloWorldJNI.so
HelloWorldJNI.cpp:1 から include されたファイル中:
HelloWorldJNI.h:2:17: error: jni.h: そのようなファイルやディレクトリはありません
HelloWorldJNI.h:15: error: ‘JNIEXPORT’ does not name a type
HelloWorldJNI.cpp:2: error: ‘JNIEXPORT’ does not name a type
bash$ ls -l /usr/java/jdk1.6.0/include/jni.h
-rw-r--r-- 1 root root 67831 11月 29 18:49 /usr/java/jdk1.6.0/include/jni.h

590:デフォルトの名無しさん
07/03/23 17:07:14
l じゃなくて I だよ
lは -lpthreadみたいにライブラリに対して使う

591:デフォルトの名無しさん
07/03/23 17:59:14
>>590
ありがとうございます
できました
本当に助かりました

592:デフォルトの名無しさん
07/03/31 20:35:04
4系ってコンパイルを正常に終わらせられるソフトウェアはまだ多くないと聞いたんだけど
それと、Debianは2.95からパッケージに置いてあるのに
Fedoraは3.3より先は切り捨てられているのはどうかと思うが

593:デフォルトの名無しさん
07/03/31 20:37:45
debianってそういうディストロだし
fedoraってそういうディストロだし

594:デフォルトの名無しさん
07/03/31 20:39:14
>>593
で、4系ってどうなのよ
アレな出来なのか?

595:デフォルトの名無しさん
07/03/31 20:46:50
4.0 まぁ許容範囲
4.1 ギリギリ許容範囲
4.2 …だめぽ
4.3 期待の新星

javaとfortranについては順調に進歩してる。
が、肝心のcが…
コンパイル時間は増える、バイナリはでかくなる&遅くなる、
でいい事あんまなし。

596:デフォルトの名無しさん
07/03/31 20:54:41
>>595
ありがとう
まだ3系のほうがいいのね・・・

597:デフォルトの名無しさん
07/03/31 22:15:44
4.0 転換期。まぁ少しの性能の低下はしかたない。
4.1 すこし性能が回復。まだ3.6に及ばず。
4.2 なにそれうまい?
4.3 memcpy! memcpy!

598:デフォルトの名無しさん
07/03/31 22:42:26
何と引き換えに性能が劣化してるの?

599:デフォルトの名無しさん
07/03/31 22:47:07
>>598
URLリンク(www.jp.redhat.com)

600:デフォルトの名無しさん
07/04/01 04:48:19
IA32への対応はそろそろ限界なのでは?

601:デフォルトの名無しさん
07/04/01 09:48:20
案の定、4.2で多くのパッケージをコンパイルしたアホなLinuxのディストロが出てきたねぇ。

602:デフォルトの名無しさん
07/04/01 10:11:17
俺は使わないが、問題の炙り出しになるので大歓迎。

603:デフォルトの名無しさん
07/04/01 10:40:42
問題の炙り出しっつーても…
これ、どうせ廃棄ものだぜ?
2.96や3.3みたいに残しておく価値ないし
4.2で握るんなら4.3cvsで握ってくれた方がうれしいよ…
たとえ爆死してもまだ納得できる

604:デフォルトの名無しさん
07/04/02 17:28:52
>>601
Momonga 4なら4.2は捨てて4.1で行くことにしたらしいぞ。
URLリンク(developer.momonga-linux.org)
URLリンク(developer.momonga-linux.org)

605:デフォルトの名無しさん
07/04/03 00:22:24
そんな日本ローカルな鳥なんてどうでもいい。

606:デフォルトの名無しさん
07/04/03 02:06:59
あー momonnga ってまだあったんだー

607:デフォルトの名無しさん
07/04/07 11:14:29
gcc(ていうかGNU ld?)で、未使用な関数とかを自動的に除去して
サイズ縮小したいんですが、そもそもそんな機能ありますか?

608:デフォルトの名無しさん
07/04/07 12:24:40
>>607
gcc -ffunction-sections -Wl,--gc-sections 以下略
URLリンク(www.radiumsoftware.com)


609:デフォルトの名無しさん
07/04/07 12:53:16
結果的に未使用な関数の除去は出来るけど、
-ffunction-sectionsは性能の低下を引き起こすので使用には注意。

結局、その手の機能はまだ実装されてないんだね…

610:デフォルトの名無しさん
07/04/07 12:56:30
>>608
アリガトン!でも除去してくれなかったよorz。



611:デフォルトの名無しさん
07/04/07 13:22:17
>>610
ソースを一つに纏めて、全ての関数にstaticをつけると未使用関数は消えてなくなるんじゃね?w

612:デフォルトの名無しさん
07/04/07 15:49:11
>>611
その辺を-fwhole-programが面倒見てくれるのかと思っていた時期もありました・・・


613:デフォルトの名無しさん
07/04/07 16:09:56
MacOSXでg++の4系列を使い始めたのですが,
以下のコードでコピーコンストラクタがないと起こられます.
#include <iostream>
using namespace std;
class A {
A (const A &p);
A &operator = (const A &p);
public:
A () {}
friend ostream &operator << (ostream &p_os, const A &p_a) {return p_os;}
};
int main ()
{
cout << A () << endl;
return 0;
}
エラーメッセージは
test.cpp:4: error: 'A::A(const A&)' is private
test.cpp:12: error: within this context
です.g++-3.3では起こられないのですが,これってg++-3.3の方が正しいですよね?

powerpc-apple-darwin8-g++-4.0.1 (GCC) 4.0.1
g++-3.3 (GCC) 3.3 20030304


614:デフォルトの名無しさん
07/04/07 18:54:17
C++相談室で聞くことにします


615:デフォルトの名無しさん
07/04/07 22:24:49
URLリンク(lists.apple.com)
この辺の話じゃね?

616:デフォルトの名無しさん
07/04/15 07:47:47
a==1;
これについて、Warningを吐いてくれるオプションってある?

-Wall とか以外で。

617:デフォルトの名無しさん
07/04/15 10:11:39
warningを個別に禁止・許可することができるようになりましたか?

618:デフォルトの名無しさん
07/04/15 10:56:35
なんで道具に頼るんですか?

619:デフォルトの名無しさん
07/04/15 15:29:58
チェックを人間の目に頼るのは小学生まで

620:デフォルトの名無しさん
07/04/15 17:13:21
幼稚園児?保育園児?

621:デフォルトの名無しさん
07/04/15 20:45:08
>>617
2000年問題とかは個別に禁止・許可できるよ

622:デフォルトの名無しさん
07/04/15 20:53:26
まだできないようですね。やれやれ。

623:デフォルトの名無しさん
07/04/15 22:09:08
できました。ありがとうございました。

624:デフォルトの名無しさん
07/04/17 00:19:47
ちょっと.code16モードで生成されるコードに疑問があるので質問させてください。

__asm__(".text\n.code16\n.global _start\n_start:\njmp boot_main\n");

void asm_putc_ng(char c) { __asm__("int $0x10" :: "a"(0x0e00|c), "b"(0x7)); }
void asm_putc_ok(char c) {
 __asm__(
   "mov 6(%ebp), %eax\n\t" // ココ。gccは8(%ebp)を生成するが・・・
   "or $0x0e00, %ax\n\t"
   "mov $0x07, %bx\n\t"
   "int $0x10\n\t");
}
void boot_main(void) { asm_putc_ok('D'); asm_putc_ng('D'); }

BIOSコールで文字を出力するサンプルですが、.code16モードだと
引数のスタック上位置の計算がおかしく、引数が正常に渡りません。
こんなコードが生成されます:

 asm_putc_ok: ! asm_putc_ng でも同様のプリアンブルを生成
  pushl %ebp
  movl %esp, %ebp
  subl $4, %esp    !char c用にスタック領域を取る
  movl 8(%ebp), %eax !第一引数をEAXに入れようとしてるがオフセットおかしくない?
  movb %al, -4(%ebp) !charなんでALだけ領域に書けば十分

リターンアドレスは16bitなので、ここは8(%ebp)でなく、6(%ebp)が
正しくないでしょうか?実際、それだと指定の文字を正しく出力します。

しかし、超メジャーなx86 gccでバグがあるとも思えないので、私が
単に16bitコード生成のための何かをしていないのではと悩んでます。
どうすれば正しいコードを生成させられるでしょうか?

625:デフォルトの名無しさん
07/04/17 00:41:38
>>624
それはそういう仕様
16bitモードで使いたいなら素直にnasmでも使っとけ
いや、絶対その方が不可解なところで悩まなくていいから。


626:デフォルトの名無しさん
07/04/17 01:20:06
MJD?でもサンクスコ。しかし説明だけ読んでる限りだと

 .code16  - 16bit-based instruction, 32bit data
 .code16gcc - 16bit-based instruction (partly 32bit), 32bit data
 .code32  - full 32bit instruction/data

となると思ってしまうよなー。実際には16bitモードなアセンブラを埋めるために
使うことだけ想定してて、16bit C compilerとして使うことは想定してないのね。

627:デフォルトの名無しさん
07/04/18 15:09:24
URLリンク(gcc.gnu.org)
さてさて、4.2はどうなることやら。

628:デフォルトの名無しさん
07/04/18 17:00:31
URLリンク(journal.mycom.co.jp)
ってことで、FreeBSD 7はgcc-4.1にしようと作業中で、
アプリとコンパイラの両方でのバグ出しも進んでいるみたいですな。

4.2系と違って4.1系はsnapshotもきちんと1週間毎に出てきているし、
4.1.3は結構よさげなリリースになる予感。

629:デフォルトの名無しさん
07/04/18 21:55:40
もう世間のディストリのbugzillaは4.2/4.3の対応待ちとかで埋まってるのに、1周期ずれてるなw

630:デフォルトの名無しさん
07/04/18 22:06:43
629はかなり頭が悪そうな雰囲気

631:デフォルトの名無しさん
07/04/20 17:36:43
広く出回ってるアプリケーション?をgcc3.4系でコンパイルする際に
つけといたほうがいいオプションってありますか?

ほとんどの場合以下のオプションをつけてます。(xeon 5130の場合)
CC=gcc \
CFLAGS='-march=nocona -mcpu=nocona -m64 -O9 -mmmx -msse -msse2 -msse3 -mfpmath=sse' \
LDFLAGS="-z combreloc" \
./configure \
(その他configureのオプション)



632:デフォルトの名無しさん
07/04/20 18:18:02
>>631
-Wall -pedantic -std=c99 --input-charset=??? --exec-charset=euc-jp

633:デフォルトの名無しさん
07/04/20 19:24:53
エラーチェックを厳しくするオプションと
ソースにマルチバイトが含まれてるときの処理
でしょうか?
自分で書く際には役に立ちそうですが
人のコードコンパイルするときには使いにくそうですね。
最適化オプションの話がききたかったのですが

...とおもったらここプ板なんで作る側の板なんですね
検索できてそのまま書いてしまいました。
板違いですねorz



634:デフォルトの名無しさん
07/04/20 23:35:31
>>631
とりあえず重複が多い。info見とき。

635:デフォルトの名無しさん
07/04/21 00:58:26
スレ違いかもしれませんが、他に適当なスレがないのでここで質問させてください。
arについてなのですが、同じ名前でディレクトリが違うオブジェクトファイルをライブラリに詰めたとします。
たとえば、
/dir1/obj.o
/dir2/obj.o
があったとして、
ar rcs libtest.a /dir1/obj.o /dir2/obj.o
とやったような場合です。この場合libtest.aの中にはobj.oが2つ存在することになります。

このライブラリを展開すると、obj.oは1つしか出てきません。
2つ出るのかもしれませんが、1つは上書きされるようです。
オブジェクトファイルを2つとも取り出すにはどうしたらいいんでしょうか。

636:635
07/04/21 13:15:51
どうやらどのオプションを使っても方法がないようなので、
自分でbinutilsのソースを書き換えました。

637:デフォルトの名無しさん
07/04/26 19:16:03
GCC 4.2.0 Status Report (2007-04-24)
URLリンク(gcc.gnu.org)

4/29フリーズ&RC
5月第一週リリース予定だそうな
出来はいいからとにかくリリースして4.3に集中してほしいな

638:デフォルトの名無しさん
07/04/26 19:26:07
>>637
いままでのstatus reportや、RCの出来を考えると、4.2系には不安がいっぱいというか
まるで期待が持てないものねぇ。

639:デフォルトの名無しさん
07/04/27 08:04:32
リリースするより、4.2はなかったことにして4.3になるはずのものを
4.2にスライドしてくれる方がいいんじゃない?

640:デフォルトの名無しさん
07/04/27 13:02:19
>>639
そういう意見も強かったようだけど、4.2をそのままリリースすることに決まっちゃったからねぇ。
しょうがないので、4.2の下手なマイナーアップデートをせず、4.1と4.3に力を注いで欲しいところ。

641:デフォルトの名無しさん
07/05/01 18:08:00
URLリンク(www.itmedia.co.jp)
> GCC 3.3よりもGCC 4.0でビルドする方が高いパフォーマンスを得られる
3系の方が速いのかと思ってた

642:・∀・)っ-○◎●
07/05/01 19:51:59
絶対嘘。3.3のほうがバイナリ速い。

643:デフォルトの名無しさん
07/05/01 20:26:49
場合によるだろ
すぐに絶対とか言っちゃうやつは馬鹿な証拠

644:デフォルトの名無しさん
07/05/01 20:57:03
>>641
何がしたいのかよくわからない記事だね。
ブラウザを起動させたまま同じページを100回ロードするとかの方がいいだろうに。

あえて>>641を材料に考えると、3通りの全てのテストで3.3と4.0の差は
optの方がnooptより縮まっているのだから、3.3の方が4.0より最適化が
優れていると考えるのが自然だと思う。

全条件にわたって4.0のグラフの方が短いのはシンボル解決など起動時の負担が
小さくなるような仕様の変更があったのではないかと推測。

あと、今時こういう測定で「画像主体」はないんじゃないかとw
CSSバリバリとかDHTMLとかSaaSとか、重さを感じるページってのはそういうの
なんだからその辺でやってくださいよと。

645:デフォルトの名無しさん
07/05/01 21:26:37
団子ちゃんが言うことは絶対なんデス><


646:デフォルトの名無しさん
07/05/01 21:50:00
つーかさ、そこらのコードがちょっとばかし速く動くより、
ダンゴさんのコードが速く動くことのほうが、
全世界的に見て有用だろ。

647:デフォルトの名無しさん
07/05/01 22:35:36
団子のコードが速くなる3系>>>>>>firefoxが速くなる4系

648:・∀・)っ-くコ:彡-
07/05/02 00:29:51
いかさまだろ

649:デフォルトの名無しさん
07/05/02 05:57:54
短時間で連レスする奴が並んでるな
後半消えてるけど

650:デフォルトの名無しさん
07/05/02 07:19:33
ITmediaも暇なことしてるなw
httpなんて最適化で劇的に高速になるわけねーんだから
ユーザーがビルドしても時間のムダでしかないだろ。

651:デフォルトの名無しさん
07/05/02 11:03:52
これほど偉そうな割にピント外れのレスも珍しい。

652:デフォルトの名無しさん
07/05/02 12:33:38
社員乙

653:デフォルトの名無しさん
07/05/02 15:16:59
レンダリングのことをダウンロードだと思っているようで。

654:デフォルトの名無しさん
07/05/02 15:19:13
言い方変だったな。
firefoxではローカルファイルを表示できないと思っている、というほうが正しいか。

まあGWだから仕方ないけど。

655:デフォルトの名無しさん
07/05/02 16:39:12
HTML解析と内部DOM生成、スクリプトとのやりとり、レンダリング
どれも重そうだよ

656:デフォルトの名無しさん
07/05/03 00:51:07
しょうもないことしてるな。
一ランク上のプロセッサ買ったほうが手っ取り早いだろ。

657:デフォルトの名無しさん
07/05/03 00:51:56
そのネタもう飽田

658:デフォルトの名無しさん
07/05/03 06:06:16
フルアセンブラでブラウザ書けばきっと速いよ

                     ハ_ハ  
                   ('(゚∀゚∩ はやいよ!
                    ヽ  〈 
                     ヽヽ_)

659:デフォルトの名無しさん
07/05/03 06:10:02
そのネタも、最適化なめるな突っ込みも、もう飽北

660:デフォルトの名無しさん
07/05/03 11:21:58
シェルスクリプトでブラウザ書けばきっと(ry

661:デフォルトの名無しさん
07/05/03 19:17:10
ハンドレンダリング
これ最強。

662:デフォルトの名無しさん
07/05/04 04:56:58
>>661
だよな、テーブル表記なんか心が和む微妙な曲線で描かれるんだぜ


663:デフォルトの名無しさん
07/05/04 12:47:42
openmpが使える環境だと4.2の方が圧倒的に速いね

664:デフォルトの名無しさん
07/05/08 17:23:45
GCC って今 rand のアルゴリズムに何使っとん?

665:デフォルトの名無しさん
07/05/08 17:29:20
GCCって乱数なんか使ってるの?

666:デフォルトの名無しさん
07/05/08 17:30:30
使っているlibraryによる。

liblibertyなら↓を読んで。
URLリンク(gcc.gnu.org)

667:デフォルトの名無しさん
07/05/08 18:37:24
TYPE_0 は線形合同法っぽいけど、他のは・・・何だろ。
これが噂の遅延フィボナッチとやら?
とりあえず、TYPE_0 以外では >> 1 はしてるっぽいので安心した。

668:デフォルトの名無しさん
07/05/09 04:01:19
>>664
で、使ってるライブラリは何なの?
MinGW? Cygwin? OSのlibc?


669:デフォルトの名無しさん
07/05/09 06:22:54
>>668
別に自分の環境のだけのが知りたいわけでもないんで。

670:デフォルトの名無しさん
07/05/09 06:43:36
そもそもgccとrand()に何の関係もないわな。


671:デフォルトの名無しさん
07/05/09 07:04:49
ぬ? UNIX/Linux だと OS が提供してるの?

672:デフォルトの名無しさん
07/05/09 07:48:20
コンパイラとライブラリが別

673:デフォルトの名無しさん
07/05/09 07:50:26
いや、ライブラリ提供者。

674:デフォルトの名無しさん
07/05/09 08:01:54
>>671
どんなOSでも、OSのランタイム環境の一部として、配布されている。
開発環境がない実行環境でも動かないといけないから。
今時はほとんどダイナミックリンクだしね。

675:デフォルトの名無しさん
07/05/09 08:07:18
>>674
OSのランタイム環境ってなんだよw
rand関数提供してるOSなんて見たこと無いぞ
VBのラインタイムと混同してないか?
半端な知ったかぶりするなら黙ってたほうがいいよ

676:デフォルトの名無しさん
07/05/09 08:21:27
>OSのランタイム環境の一部として
いや、ライブラリ(ry

677:デフォルトの名無しさん
07/05/09 08:40:41
>>675
UNIXではOS添付のlibc内のrand()を使うのが当然。
SolarisでもLinuxでも*BSDでも、そう。
gcc以外のコンパイラでもrand()は同じ。

MinGWだって、MinGWがrand()を提供しているんじゃなくて、msvcrtが提
供しているわけで、gccとは関係ない。





678:デフォルトの名無しさん
07/05/09 09:06:49
へー。勉強になった。

679:デフォルトの名無しさん
07/05/09 19:38:26
int msvcrt_rand() { rand_seed = rand_seed * 214013 + 2531011; return (rand_seed >> 16) & 0x7fff; }
int newlib_rand() { newlib_seed = newlib_seed * 6364136223846793005L + 1; return (newlib_seed >> 32) & RAND_MAX; }
long glibc_rand() { x=x*1103515245+12345; return x & 2147483647; }

それぞれの実装

680:デフォルトの名無しさん
07/05/09 19:47:10
glibc は何でいつまでもこんな糞実装なんだろう?
右シフトもしないなんて。

681:デフォルトの名無しさん
07/05/09 21:09:27
>>680
互換性

682:デフォルトの名無しさん
07/05/09 21:12:47
RAND_MAX を変えるのは流石に困るが、
乱数アルゴリズムに依存したコードなんて書いてる奴がいるのか・・・。

683:デフォルトの名無しさん
07/05/09 21:30:56
>>682
つ モンテカルロ法

乱数のアルゴリズムつーか、質が問題

684:デフォルトの名無しさん
07/05/09 21:32:34
つ[再現性]

685:デフォルトの名無しさん
07/05/09 21:33:23
質が良くなる分には問題ないと思うけど。
というか、モンテカルロ法に rand を使う時点で問題がある気もする。

686:デフォルトの名無しさん
07/05/09 21:36:36
そんなに再現性が欲しいなら自前で実装しそうなんだがなあ。

687:デフォルトの名無しさん
07/05/09 21:45:00
だよなあ

688:デフォルトの名無しさん
07/05/09 21:49:10
結局はしょっぱいプログラムの尻拭いってことか。

689:デフォルトの名無しさん
07/05/09 23:58:56
>>679
man読むとこんなの使ってないってはっきり書いてあるんだけど
glibc

690:デフォルトの名無しさん
07/05/10 00:06:07
質じゃなくて、性質に依存している。
性質が明記してあるのだから当たり前。


691:デフォルトの名無しさん
07/05/13 13:43:44
擬似乱数
スレリンク(tech板)l50

692:デフォルトの名無しさん
07/05/14 13:19:01
ファイルスコープで extern int a = 0; とか書くと g++ 4.0.1 だと警告出るのな。
まあそれはいいんだけど、なぜか 2 度も同じ警告が出る。
これはバグと言っていいんだろうか。

693:デフォルトの名無しさん
07/05/16 06:59:55
4.2きたね。
まだ正式リリースじゃないっぽいけど。

694:デフォルトの名無しさん
07/05/16 07:20:08
>>692
ヘッダに書いてるの?
ソースは分割してるの?
その定義が使われている .c ファイルは何個あるの?

695:デフォルトの名無しさん
07/05/16 07:35:16
やればわかる。
.c 1個のみ。

696:デフォルトの名無しさん
07/05/16 15:10:49
4.2ちょっと試してみたけどやっぱりあんまり速くなってなかった。
というか遅くなってた。
4.1.2と同じオプションでコンパイルしただけだけど。

697:デフォルトの名無しさん
07/05/16 15:35:33
コンパイル速度が遅くなったのか。
それとも実行速度が遅くなったのか。

698:デフォルトの名無しさん
07/05/16 15:53:10
実行速度だよもちろん。
-O3 -fomit-frame-pointer -march=pentiumpro
くらいしか指定してないけど。

699:デフォルトの名無しさん
07/05/16 16:34:39
コンパイル速度の事かと思った。

700:デフォルトの名無しさん
07/05/16 17:03:08
コンパイル速度が速いに越したことは無いが
そもそも実行速度が速くなればフィードバックするっしょ

701:デフォルトの名無しさん
07/05/16 19:19:15
May 13, 2007
GCC 4.2.0 has been released.

702:デフォルトの名無しさん
07/05/17 03:17:36
>>698
今時pprowmarch=nativemtune=nativeでやってみたら。

703:デフォルトの名無しさん
07/05/18 15:56:09
openmpは反則的な速さだ

704:デフォルトの名無しさん
07/05/20 20:22:05
gcc 4.3.0 まだー?

705:デフォルトの名無しさん
07/05/22 21:29:58
3.4.2 を使っている人いますか?

706:デフォルトの名無しさん
07/05/23 15:05:21
います。

707:デフォルトの名無しさん
07/05/23 17:27:07
1.36.3を使っている人いますか?

708:デフォルトの名無しさん
07/05/23 19:55:53
います。

709:デフォルトの名無しさん
07/05/24 05:17:05
2.95.xを使った事のないひといますか?

710:デフォルトの名無しさん
07/05/24 07:10:41
います。

711:デフォルトの名無しさん
07/05/24 07:52:44
います。

712:デフォルトの名無しさん
07/05/24 09:01:27
living roomって日本語でなんだっけ?

713:デフォルトの名無しさん
07/05/24 09:20:11
>>712
居室。一般住宅なら居間。

714:デフォルトの名無しさん
07/05/24 14:52:26
きょます。

715:デフォルトの名無しさん
07/05/24 22:22:37
gcc-4.2.0ってなんで自分のコンパイルにあんなにいっぱいメモリ喰うの?

716:デフォルトの名無しさん
07/05/24 22:26:53
います。

717:デフォルトの名無しさん
07/05/24 23:20:39
>>715
メモリを使うことで、gccが実際に使える環境かどうかを試験しているのです。
使えない環境なら、ビルド自体ができないというフールプルーフ設計です。
gccのビルドよりメモリを食うソフトはありませんから。

718:デフォルトの名無しさん
07/05/25 03:31:29
メモリ256MB
スワップ892MB
FreeBSD-currentでgcc4.2使ってxorg7.2コンパイルしたら gcc internal error で落ちるから何だとおもったら
swap_pager_getswapspace: failedワロタ


719:デフォルトの名無しさん
07/05/25 04:00:28
>>717
C++ならもっとメモリ食うよ

720:デフォルトの名無しさん
07/05/25 08:13:31
>>718
スワップとあわせて1G…現状では小さすぎるような。
32bitカーネル環境だとしても、合計で4Gの壁ギリギリかそれ以上とらないと、最近のアプリ全般自体が厳しいかも。
合計1Gだと、デスクトップをXfceなどで、しかもチューンして行かないと厳しいと思う。
もしくはそもそも、ビルドしている間はXやサーバ類を全て切った状態でやるか。
ま、コンパイラ周りでメモリリークしてる可能性もあるので、修正版を待ちましょう:-)


721:デフォルトの名無しさん
07/05/25 15:33:26
twmなら快適です

722:デフォルトの名無しさん
07/05/26 06:47:50
>>720
そんなことない。
メモリ 256MB、スワップ 1GB 程度でも GNOME だって充分動く。
Xorg のコンパイルでアホみたいにメモリ食うのは GCC のバグだし。
URLリンク(gcc.gnu.org)

723:デフォルトの名無しさん
07/05/26 07:11:51
4.2のかなり大きなバグがまた一つ…って感じか。
にしても、FreeBSD-currentを筆頭に、gcc-4.2に移行するOSがかなり多いのにはびっくり。

724:デフォルトの名無しさん
07/05/26 15:53:34
4.2はいらない子

725:デフォルトの名無しさん
07/05/26 16:03:46
4.2はダメな子

726:デフォルトの名無しさん
07/05/26 20:04:47
>>722
gcc-4.2.0のコンパイルにメモリバカ食いするのもgcc-4.2.0のバグですか?

727:デフォルトの名無しさん
07/05/26 20:37:33
仕様です。
4.2がコンパイルできないようなマシンで使うなということです。

728:デフォルトの名無しさん
07/05/27 00:18:41
openmpのコード吐かせてるけど
これ対してというか全然糞もマルチスレッド化されねーぞw
どうゆうことよw

729:デフォルトの名無しさん
07/05/27 00:56:11
つ export OMP_NUM_THREADS=16

730:デフォルトの名無しさん
07/05/27 01:16:35
>>729
それでも全然はやくねーぞ?QuadCore-Xeon2コ積んでるけど
なんもはやくね。VCCだと早くなるんだよね。

絶対4.2は障害児だ

731:・∀・)っ-くコ:彡-
07/05/27 02:01:18
4.xは何かおかしい。やっぱ3.3が最強か

732:デフォルトの名無しさん
07/05/27 13:44:26
>>731
gcc-snapshotが最強

733:デフォルトの名無しさん
07/05/27 14:56:04
3.3.3が一番いい子
4.3がそれを越えるいい子になってくれますように…

多分4.2よりも赤帽拡張の入った4.1.xの方が性能いいと思う

734:デフォルトの名無しさん
07/05/27 15:01:22
>>726
つ stage2

735:デフォルトの名無しさん
07/05/27 15:08:12
>>733
とはいえ、C++のことを考えるとgcc4が必須になりつつあるからなぁ。

736:デフォルトの名無しさん
07/05/27 15:08:50
一応今入れているのがsnapshot。これだとバージョンが4.2.1って表示されますね。
でも4.2に変えてからJavaのソースからVMをmakeしようとするとエラーが出るようになった(TT)

>>731
> 4.xは何かおかしい。やっぱ3.3が最強か
詳しいことはよく解らないけど、マルチメディア系のアプリとかmakeでエラーが出るやつも
3.3とか使うと何故かエラーなしでmakeできたりしてました。以前から。。。

737:デフォルトの名無しさん
07/05/27 16:06:11
>>736
つ-fno-strict-aliasing

738:デフォルトの名無しさん
07/06/01 11:38:36
それってWarnが厳密にErrorになっただけじゃないのか。

739:デフォルトの名無しさん
07/06/06 17:44:14
GCCは3以降特に4.0あたりから、文法以前に論理的に怪しい挙動に陥りそうなコーディングをエラーにする方向に行ってるからね。
逆にいえば、>>736が言っているような形でエラーが出るコードは、該当する部分の前後をチェックしながら修正かけるのが筋。
今でもコンパイルが通ってi386で動いてもPPCやSH,ARM、酷いときはamd64やia64でもコンパイルは通るけど挙動が狂ってしまうようなコードを平気で書いてるひとが少なくないようだし
…Linuxなどのカーネル周りのコードでもそういうコードがあって、lkmlなどで修正が飛び交うことがよくある。

740:デフォルトの名無しさん
07/06/06 20:01:19
アライメント事情はよくわからんしなー

741:デフォルトの名無しさん
07/06/07 10:53:10
openmpは4.2じゃないと使えないの?

742:デフォルトの名無しさん
07/06/07 16:05:45
4.3でもいけると思うけど。

743:デフォルトの名無しさん
07/06/07 20:55:27
ディストリがパッチ当てたやつだと4.1でもいける

744:デフォルトの名無しさん
07/06/09 17:09:48
gcc4.1で自動ベクトル化を使おうとすると
too many BBs in loop
というメッセージが出るのですが、BBって何ですか?

それと
not vectorized: multiple exits
はどのようにしたら解消できるのでしょうか?

インテルコンパイラではベクトル化できていました。
その際のオプションは
-O3 -xW -ansi_alias
です。


745:デフォルトの名無しさん
07/06/10 04:26:30
>>BB
Bベクトルに決まってるだろ?

746:デフォルトの名無しさん
07/06/10 08:33:50
真・三國無双BB

747:デフォルトの名無しさん
07/06/10 09:50:51
もはやBB戦士の時代ではないのか・・・

748:デフォルトの名無しさん
07/06/10 12:03:14
ガチャポン戦士こそ至高

749:デフォルトの名無しさん
07/06/10 13:31:50
BBクィ(ry

750:デフォルトの名無しさん
07/06/10 19:11:33
URLリンク(gcc.gnu.org)
* Dataflow branch.

  Kenny et. al. plan to merge this Monday.

URLリンク(gcc.gnu.org)
I wasn't sure of the Objective-C 2.0 timing until recently... I'd like to contribute it during stage 2.

URLリンク(gcc.gnu.org)
Intel is planning to contribute Intel BID runtime library before July
1.

751:デフォルトの名無しさん
07/06/12 02:22:42
gcc4で、デフォルトで定義されてるシンボルを知るのってどうしたらいいでしょう?
(-D__unix__ とか -D__i386__ とか -D__GNUC__=2 とか)

昔は gcc -v -E - < /dev/null で確認できたのですが、
gcc4からは表示してくれなくなったようなので…

752:デフォルトの名無しさん
07/06/12 04:52:28
gcc -dM -E - < /dev/null
詳しくはinfoのPreprocessor Optionsをどうぞ。

753:デフォルトの名無しさん
07/06/12 10:13:20
おおおおおおお。
ありがとうございました。一度きちんとinfoに目を通します。

754:デフォルトの名無しさん
07/06/13 08:23:00
よーし、おまいら、もう一度
gcc --help と叩くんだ

755:デフォルトの名無しさん
07/06/13 17:08:52
$ gcc --help
-bash: gcc: command not found


756:デフォルトの名無しさん
07/06/13 21:37:42
            ∩___∩
            /  ノ   \  ヽ 
            | ●    ● |
          彡   (_●_)    ミ  
           /、   |∪|    ,\   >>755 この鮭の切り身やるから帰れよ
          /.|     ヽノ    | ヽ   
       ,,/-―ー-、, --、   .|_,|
    r-、,'''";;:;;:;::;;;;:;;::;:;:;;::;:;`'- /_,l,,__ )
   |,,ノ;;:;r'" ̄ ゙̄^"`Y'-、;;;::;:;::;:;:;:;::;:|
    .ヽ,′       ;   `"";;;;;⌒゙')
     ´`゙'''''''''''‐-‐'"`‐-‐'"゛  `゙´
              |  .∥ /
            ("___|_`つ  

757:デフォルトの名無しさん
07/06/13 21:58:44
わろす

758:デフォルトの名無しさん
07/06/22 09:15:00
4.2.1マーダーーーー????

759:デフォルトの名無しさん
07/06/23 03:33:34
うまうま

760:デフォルトの名無しさん
07/06/29 18:51:40
コンパイル(リンク)時に、ある関数をリンクしようとしたら
メッセージを出すようにしたいんだけど
どうしたらいいのかね

761:デフォルトの名無しさん
07/06/29 18:59:32
>>760
ELFだったら、リンクされる関数のオブジェクト内に".gnu.warning"セク
ションを仕込む。


762:デフォルトの名無しさん
07/07/01 00:23:19
>>761
サンクスコ
Cのソースからセクションを仕込む方法は自分で調べる

763:デフォルトの名無しさん
07/07/01 10:14:19
link-warning.hでググれ
URLリンク(www.gnu.org)

764:デフォルトの名無しさん
07/07/01 15:17:06
素直に .gnu.warning でググりゃいい。

URLリンク(www.google.com)

765:デフォルトの名無しさん
07/07/01 15:18:04
リンクミスった。こっち。URLリンク(www.google.com)

766:デフォルトの名無しさん
07/07/01 21:52:31
GCC4.0.2でCygwin上でno-cygwinオプション付けたら定義されてないって怒られた…

767:デフォルトの名無しさん
07/07/01 22:15:18
そりゃそうだ。Cygwin付属のGCCは特製。
自前でビルドしたGCCなら、プリプロセッサ識別子の定義と
リンクさせるライブラリの選択をどうにかすれば何とかなると思う。

768:デフォルトの名無しさん
07/07/01 22:24:56 BE:396279465-2BP(8000)
ありがとう。やってみる。

769:デフォルトの名無しさん
07/07/03 17:03:47
4.3.0がstage2に突入しているね。4.2.0の時とは違って、かなり順調な感じ。
URLリンク(gcc.gnu.org)

770:デフォルトの名無しさん
07/07/03 21:34:44
あと半年程度で出てほしいな…
ディストリパッチ付きの4.1はいい環境だがさすがに飽きる

771:デフォルトの名無しさん
07/07/06 00:24:19
4.2は鬼っ子で終わるか…

772:デフォルトの名無しさん
07/07/06 04:11:32
>>771
そもそも、流産させようという意見のほうが強力だったわけだし…

773:デフォルトの名無しさん
07/07/06 16:58:18
4.3はいつ出ますか?

774:デフォルトの名無しさん
07/07/06 19:34:27
>>773
URLリンク(gcc.gnu.org)
を見るとわかるようにgcc-4.1はstage2入ってからリリースまで約8ヶ月、
4.2は約14ヶ月という具合にバラバラ。

なので、半年以上先だろうなぁという予想は立つけど、いつになるのかは
さっぱりわからん。

775:デフォルトの名無しさん
07/07/17 23:00:06
どうせ赤帽の都合でしょ?

776:デフォルトの名無しさん
07/07/18 01:36:09
ちょっとbinutils/gcc/gdbのツールチェインのビルドについて判らない点が
あるので教えてください。

組み込みだとターゲット用にbinutils/gcc/gdbの3点セットをまず作る訳ですが、
ここでgccのビルド方法としては

・素の、libcなしのgcc(--without-headers)をビルドするのみ
・libcなしgccをビルドした後、そのgccを使って--with-headers=...で何らかのlibcを組み込んだgccをリビルド

の2つがあります。で、質問なのですが、

・後者のgccで-nostdlibすれば、前者のlibcなしgccを使うのと同じことですか?
・前者のgccで別途ビルドしたlibcとリンクすれば、後者を使うのと同じことですか?

色々な構成にあわせてgccをビルドするのが面倒なので、gccとしては
libc抜きgccのみ用意して、後はnewlib/uclibc/dietlibc/eglibcを
別途外部ライブラリとしてビルドし、アプリ側ビルドファイルのほうで
リンクするlibcを選択するような形にしようかと考えています。

777:デフォルトの名無しさん
07/07/18 10:30:28
>>776
libgccどうすんの?


778:デフォルトの名無しさん
07/07/18 12:53:08
from GCC ML
------------------------------------------
Subject: 4.2 branch frozen for release

I plan to spin the GCC 4.2.1 release tomorrow.

Please do not make any further changes to the branch.

Thanks,

779:デフォルトの名無しさん
07/07/19 09:18:52
#define int64 long int(longとintの間にスペースがあるのがミソ)を
gcc実行時の-Dオプションで実現したいんですが
どうすればいいでしょうか

780:デフォルトの名無しさん
07/07/19 10:12:04
自己解決しました
どうもすみません

781:デフォルトの名無しさん
07/07/19 11:49:28
typedef を使わないのはソースをいじれないから?

782:デフォルトの名無しさん
07/07/20 09:33:39
糞質問に糞レスw

783:デフォルトの名無しさん
07/07/20 21:49:21
4.2.1キター

784:デフォルトの名無しさん
07/07/24 15:05:58
>>777
そんなもん使うな。
初期化と割り算を避けまくればなんとかなる。

785:デフォルトの名無しさん
07/07/24 18:57:40
GCC でも VC++ と同じ形の #pragma pack が使えるみたいですが、
これってバージョンいくらくらいから導入されましたか?

786:デフォルトの名無しさん
07/07/24 19:01:39
>>785
タラちゃんに聞いてみたら

787:デフォルトの名無しさん
07/07/25 01:12:40
プリコンパイル済みヘッダってほとんど使われてないよね

788:デフォルトの名無しさん
07/07/25 01:20:22
Mac OS X

789:デフォルトの名無しさん
07/07/25 01:23:26
そもそも使い方が分からない
gccをビルドするときにgch作られてるなと思うくらい

790:デフォルトの名無しさん
07/07/25 19:24:44
.hをGCCに渡すだけだったような

791:デフォルトの名無しさん
07/07/25 19:28:57
pch使うにはちょっとコツがいる。英文ページに解説があるけど...

792:デフォルトの名無しさん
07/08/05 16:22:57
unsignedをforに使うと警告出るんだね・・・
警告消す方法ないのかなぁ

793:デフォルトの名無しさん
07/08/05 16:36:51
>>792
符号有り無しの比較だろ?なら型を合わせろ。

794:・∀・)っ-くコ:彡-
07/08/05 16:51:56
for (unsigned int i = 0; i < n; i++)

とかなら、n の型が単にsignedなだけだろうが

795:デフォルトの名無しさん
07/08/05 16:56:22
ループカウンタとループ上限の値の型ははっきりと揃えるべし。

796:デフォルトの名無しさん
07/08/05 18:43:50
-Wno-sign-compareで消えるはず。

797:デフォルトの名無しさん
07/08/05 18:46:35
それは重要な警告だから解決とは言わん。

798:デフォルトの名無しさん
07/08/05 18:47:11
消していいのか、と。

799:・∀・)っ-くコ:彡-
07/08/05 18:53:01
電車の脱線が起きても無視すれば運行に支障なしって言ってるのと変わらん

800:デフォルトの名無しさん
07/08/05 18:54:05
集中砲火ワロタ

801:デフォルトの名無しさん
07/08/05 19:03:53
ダンゴ先生の発言はいつもピリリとしてるな

802:デフォルトの名無しさん
07/08/05 21:02:22
スレが進んでるかと思えばこんなかw

803:デフォルトの名無しさん
07/08/06 11:42:17
その質問をコンパイラのスレに書き込む時点で腐ってる

804:デフォルトの名無しさん
07/08/07 08:55:47
g++ 使って独習C++の例文ためしてたらそのままでは、エラーがコンパイルできなかった。

template <class T> class Num {
public:
T x;
Num(T i) { x = i; }
virtual T get_val() { return x; };
};

template <class T>
class Square : public Num<T> {
public:
Square(T i) : Num<T>(i) {}
T get_val() { return x * x; }
};

を一応継承したクラスで、"x"を"Num<T>::x"としたらコンパイルできたけど、
他のコンパイラでためしたら↑でもできるんだが、このままで、g++で通すこと出来ませんか?

805:デフォルトの名無しさん
07/08/07 09:05:10
>>804
そのままじゃ無理。
this->x でもいける。

URLリンク(gcc.gnu.org)
"In a template definition, unqualified names will no longer find members of a dependent base ..."

806:デフォルトの名無しさん
07/08/07 12:01:20
>>805
サンクス

807:デフォルトの名無しさん
07/08/08 10:57:04
インラインアセンブラの構文を知りたいと思い、
4.21のgcc.infoを読んでいるのですが、
5.35 Assembler Instruction with C Expression Operands
しか見つからず、制約に関することしかわかりません。
構文はどこに載っているのでしょうか。


808:デフォルトの名無しさん
07/08/08 11:02:05
as.info

809:807
07/08/08 21:24:08
アセンブラの構文ではなく、
インラインアセンブラの構文なんですが...

810:デフォルトの名無しさん
07/08/08 22:46:48
制約については
gccint.info か
gcc/config/*/*.{c,h,md}
を眺めれ。

ターゲットとか記述したいものを書けば誰か答えてくれるんでね?

811:デフォルトの名無しさん
07/08/08 23:02:08
URLリンク(www.google.co.jp)
こういうのとは違うのかね

812:デフォルトの名無しさん
07/08/08 23:16:36
アセンブラの構文 + インラインアセンブラの制約
以外に何が知りたいのか分からない。

asm("mnemonic"
  : "+r"(var), "r"(var2)
  : "="(var3)
  : "g"(var4));
のコロンで区切る部分の意味を知りたいなら 5.37 Constraints for asm Operands を。

ニモニックそのものを知りたいならここじゃない何処かへ。

813:デフォルトの名無しさん
07/08/09 12:56:59
>>799
いや、さすがにそれは支障あるw


814:デフォルトの名無しさん
07/08/09 12:59:35
ここではないどこかへ

815:デフォルトの名無しさん
07/08/09 21:15:08
>>813
>>796 も同じくらい支障があるって話だ。

816:デフォルトの名無しさん
07/08/12 16:43:58
GCC 4.3.0 Status Report (2007-08-09)
URLリンク(gcc.gnu.org)

来月にはstage3に入るらしい
うまくいけば今年中に出るかなぁ…

817:デフォルトの名無しさん
07/08/12 17:15:58
C++0x のどのくらいかは
拡張機能として対応してくれるのかね。

818:デフォルトの名無しさん
07/08/13 00:46:49
>>817
既にいくつか対応してる。
URLリンク(gcc.gnu.org)

819:デフォルトの名無しさん
07/08/14 07:08:04
GCCで文法チェックだけするって無理?
リンクとかしなくていいから(単体で)コンパイルできないときだけ
エラー出してほしい。

820:デフォルトの名無しさん
07/08/14 07:30:56
>>819
リンクどころかアセンブルさえせずにコンパイルするだけなら-S
アセンブルまでなら-c

821:デフォルトの名無しさん
07/08/14 08:10:07
&& って何だー

822:デフォルトの名無しさん
07/08/14 08:16:06
>>821
釣り? マジならC初心者スレへ。

823:デフォルトの名無しさん
07/08/14 08:23:00
>>820
ありがと!でもけっこう遅いなあ・・・。文法チェックだけならもっと速いと思ってたんだが・・

824:デフォルトの名無しさん
07/08/14 08:28:40
>>823
Cならsplint使えば?

+skip-sys-headers +single-include +posixlib な感じ?

825:デフォルトの名無しさん
07/08/14 08:40:41
>>822
>>818 にある右辺値参照の方ね。

826:デフォルトの名無しさん
07/08/14 09:48:04
>>819 -fsyntax-only

827:デフォルトの名無しさん
07/08/14 10:55:28
>>825
あぁ、operator&&ね。

828:デフォルトの名無しさん
07/08/14 10:56:29
違うだろ。

829:デフォルトの名無しさん
07/08/14 13:21:45
破壊的コピーをするみたいだが、
それを意識してプログラムするのは難しそうに感じる。
どうなんだろう。

830:デフォルトの名無しさん
07/08/14 13:33:25
move semanticsでググれ。

>>829
> それを意識してプログラムするのは難しそうに感じる。

それが欠点になる領域ではC++は使わないのが良い。


831:デフォルトの名無しさん
07/08/17 18:59:36
>829
ライブラリ作る側が頑張って対応してくれれば使う俺らはあまり考えなくても(゚Д゚)ウマー、というのが妥当な使われ方なんじゃないの?
一般人が template metaprogramming なんかしない(よな?)のと同じようなレベルで。

832:デフォルトの名無しさん
07/08/17 19:54:04
*_ptr見ても、それが難しいのは分かるだろ?
C++はもはやプログラミング言語の実験場だ!

833:デフォルトの名無しさん
07/08/18 14:33:30
次期では auto_ptr は deprecated になるっぽいな。
shared_ptr を推奨するようだ。

834:デフォルトの名無しさん
07/08/21 17:00:23
C++ 俺に近づくとやけどするぜ


835:デフォルトの名無しさん
07/08/27 14:41:10
AT互換機でMacOS用のバイナリを作るクロス環境って・・・作れないのかな?

ググってみても事例が見つからない

836:デフォルトの名無しさん
07/08/27 14:44:15
失礼

age忘れた

837:デフォルトの名無しさん
07/08/27 15:07:59
>>833
次期って何の次期?

838:デフォルトの名無しさん
07/08/27 15:21:49
ISO/IEC 14882:2003 の次期のことじゃね

839:デフォルトの名無しさん
07/09/03 16:52:45
ldd で出てくる共有ライブラリのパスを書き換えることってできない?

$ ldd foobar
libfoobar.so.1 => /somedirectory/libfoobar.so.1 (0x00000000)

って絶対パスになってるんだけど、このsomedirectroyを移動したいの。

840:デフォルトの名無しさん
07/09/03 17:21:40
>>839
質問を文字通りに受け取るなら、
$ ldd foobar | sed "s/somedirectory/anotherdirectory/g"
で。


ライブラリのパスは、実行ファイル内では
・相対パス(basename)が入っている場合
・絶対パスが入っている場合
がありんす。
前者は、$LD_LIBRARY_PATH を指定すればいい。
後者は、バイナリエディタで実行ファイルを書き換えるとか、
$LD_PRELOAD で上書きするとか。


841:デフォルトの名無しさん
07/09/03 17:31:47
もちろん下の意味だけど、LD環境変数は使いたくない。

そーかーやっぱバイナリ書き換えが必要かー。そういうツールないのかなあ。
とにかくありがと!

842:デフォルトの名無しさん
07/09/03 17:47:36
/etc/ld.so.conf.d?

843:デフォルトの名無しさん
07/09/04 14:10:54
man ldconfig

844:デフォルトの名無しさん
07/09/04 14:21:24
>>842
deb系のディストリか?
普通は/etc/ld.so.confだと思うけど

/etc/ld.so.conf.dがあるならそのディレクトリの中のファイルを参考に
自分でパスを追加したいのを作ればいい

追加したらrootで

# ldconfig

これで環境変数のキャッシュを更新してくれる

845:デフォルトの名無しさん
07/09/12 14:34:48
URLリンク(gcc.gnu.org) GCC 4.2.2 RC1
URLリンク(gcc.gnu.org) GCC 4.3.0: Stage 3

順調に進んでるのだなァ…

846:デフォルトの名無しさん
07/09/12 16:58:07
>>839
chrpath は?


847:デフォルトの名無しさん
07/09/13 19:56:13
ゲーツェーツェー

848:デフォルトの名無しさん
07/09/13 19:57:04
っていうか、ジーダブルシーって言う奴がいてムカつく。

849:デフォルトの名無しさん
07/09/13 20:16:43
ジーシーシーでいいじゃんよねー

850:デフォルトの名無しさん
07/09/13 21:38:03
IEEEはアイイーイーイ-だよな。
GCCは日本人らしくグニュ・コンパイラ・コレクションと呼ぼう

851:デフォルトの名無しさん
07/09/13 22:35:40
あいさんいー

852:デフォルトの名無しさん
07/09/13 22:50:28
イェェェ!

853:デフォルトの名無しさん
07/09/14 08:58:48
発音は大事だ。

ヘッケラー・アンド・コッホ
とか言うバカもんがいるが、なぜドイツ語の間に「アンド」などという英語が含まれているのか。
元がドイツ語なのだから、全部ドイツ語にして
「ヘッケラー・ウント・コッホ」と呼ぶべきだ。

854:デフォルトの名無しさん
07/09/14 09:13:36
GNUで言語も作ってしまえ
ライセンスはもちろんGPL

855:デフォルトの名無しさん
07/09/14 09:15:43
     ・ウン ・コ  

856:デフォルトの名無しさん
07/09/14 09:40:30
>>854
言語にはライセンス/コピーライトがありません。

857:デフォルトの名無しさん
07/09/14 09:41:48
マジレス禁

858:デフォルトの名無しさん
07/09/14 09:42:35
やけに伸びてるな、というときは期待できない
と予め思いつつ見たけど、やっぱりウゼェ……
なんでこういうのにだけは以上に喰い付きがいいんだ

859:デフォルトの名無しさん
07/09/14 10:49:09
マジで言ってるわけじゃないだろw

860:デフォルトの名無しさん
07/09/14 13:11:54
ぐくっ

861:デフォルトの名無しさん
07/09/14 14:19:13
>>856
言語の仕様書がGFDLなんだろう、たぶん。

862:デフォルトの名無しさん
07/09/14 17:02:05
ADAスレがもう織田信長スレしか無い件

863:デフォルトの名無しさん
07/09/14 17:02:58
違った武田信玄だったけどもう落ちてるオワタ

864:デフォルトの名無しさん
07/09/14 17:16:05
英語は発音大事と言ってはいるものの、実際に
インペろぅベド(imperoved)とか言われるとムカッと来るからな。

865:デフォルトの名無しさん
07/09/14 17:17:55
グロゥバロゥとかヴァアミアンとかね

866:デフォルトの名無しさん
07/09/15 01:22:29
織田信長って言語まじであるの?

867:デフォルトの名無しさん
07/09/15 02:28:47
>>864
そんな英単語は無い

868:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/15 12:47:51
アセンブリ手で書けばいいじゃん

870:デフォルトの名無しさん
07/09/15 14:00:44
デバッガから見える変数にバインドされるレジスタを、どうやって
アセンブリ手書きで設定するのか、正直わかりません。

シンボルデバッグ情報に変数<->レジスタ・メモリアドレスマッピングは
入っていると思うんですが、これも手書きできるということ?もしかして
インラインアセンブラではなく、フルアセンブラで書くという話なら
それはちょっと自分の能力を越えてるような・・・

871:デフォルトの名無しさん
07/09/15 14:05:42
>>870
こんな関数でもコンパイルしてみりゃ何をすればいいか判るんじゃね?
--
long long func(long long foo)
{
return foo;
}


872:デフォルトの名無しさん
07/09/15 18:20:08
>>971
それって .debug_* セクションを自分で作れとやっぱり言ってる?
info gdb-int してみたけど、激しくハードル高い・・・

873:デフォルトの名無しさん
07/09/15 18:37:11
>>872
戻り値は64bitのレジスタ変数と同じ状態になるわけだが。
ついでに、gcc -S-gすればデバッグ情報が漏れなく埋め込まれるわけだが。
もしかして、その程度の知識もないのにデバッガを疑っちゃってるわけ?

874:デフォルトの名無しさん
07/09/15 19:19:00
>>873
gdbが黒だとは言ってなくて、ただgdbからの見え方がその条件差で
必ず違うので、もっと詳しく見たいと思ってます。

そのコードだとgdbからは変数はレジスタにバインドされて見えないので
別の方法をまだ考えてますが、-Sのダンプでデバッグ情報埋め込み方法を
調べられるという考えは頭から抜けてました。やってみます。


875:デフォルトの名無しさん
07/09/16 09:32:01
もっと謙虚になって出直せ。

876:デフォルトの名無しさん
07/09/16 20:52:19
gdb のソース読めばいいのでは?

877:868
07/09/16 22:08:28
すみません、>>875 の通り、私ごときのレベルでしていい話ではなかったと
痛感しているので、全部なかったことにして下さい。このスレに書いていいと
認めてもらえる程度になるまでROMってます。

878:デフォルトの名無しさん
07/09/18 13:32:01
i686環境で例えばPPC用に何らかのアプリなどをクロスコンパイリンゲすると
本当にPPC環境で動くもんなの???

玄箱HGでも買おうかと思うのだが、さすがに玄箱でビルドとかすると、
PPC266MHzじゃつからろうなあ、と思って、
できれば速いi686環境でPPCにガチガチに最適化してから玄箱に転送できれば。

879:デフォルトの名無しさん
07/09/18 13:49:25
何をビルドするの?
ほとんどバイナリパッケージが揃っているけど? > 玄箱debian
「ガチガチに最適化」とかヲタ臭いことがやりたいなら、
ソースからバイナリパッケージを再ビルドすれば?

880:デフォルトの名無しさん
07/09/18 13:49:31
>>878
簡単なテストプログラム書いて、動くかどうかやってみればいいんじゃないの?

881:デフォルトの名無しさん
07/09/18 13:59:31
>>880
まだ買ってないだろw

882:デフォルトの名無しさん
07/09/18 14:01:16
>>881
linuxじゃないけど、クロス環境でやったことあるけど...

883:デフォルトの名無しさん
07/09/18 14:28:24
クロス・ダァイッチュラント

884:デフォルトの名無しさん
07/09/18 14:29:50
kurohako遅いよ

885:デフォルトの名無しさん
07/09/18 14:58:58
ゲーツェーツェーを来んあぴるするのに4時間くらいかかりそうだな
Pentium3 500MHzでさえ4時間かかったのだから

886:デフォルトの名無しさん
07/09/18 15:04:49
コンパイルを4時間とか考えられないし見たことも無い俺は素人

887:デフォルトの名無しさん
07/09/18 15:24:52
X68kでgcc1.3のコンパイルに一晩かかった時代もありました

888:デフォルトの名無しさん
07/09/18 15:32:21
動画のエンコードをやるようになると、4時間というのは大した時間に思えなくなる。
2passで47時間とかあるからな。

889:デフォルトの名無しさん
07/09/18 16:31:48
それはさすがにPCごと買い替えとか考えるべき時間のかかりようだと思う。

890:デフォルトの名無しさん
07/09/18 17:06:07
24時間ビーテレだから

1時間2時間コンテンツでそれだけかかったらアレだが。

891:デフォルトの名無しさん
07/09/18 17:06:17
>>885
もっとかかったような気もするが…
寝る前にmakeしておくと、起きるまでには終わってるくらい。


892:デフォルトの名無しさん
07/09/18 17:13:12
起きたらエラーで止まってたとか?

893:デフォルトの名無しさん
07/09/18 17:59:15
昔は X11 をコンパイルするのに12時間とか普通やったよねぇ…

894:デフォルトの名無しさん
07/09/18 19:19:35
今はOpenOfficeが身近で最もヤヴァいヤツだと思うんだがどうよ?

895:デフォルトの名無しさん
07/09/18 19:22:28
Qtのビルドはまいったな。ホントに一晩かかってしまった。

896:デフォルトの名無しさん
07/09/18 22:04:58
時間かけたくないから、クロスコンパイルするって話じゃないのか?

897:デフォルトの名無しさん
07/09/19 09:59:48
今でもクロスコンパイルが難しいアプリもあるけどね。
コンパイル時に実行ファイルを生成して利用するような奴。
昔Linux Zaurusで結構苦労した。

898:デフォルトの名無しさん
07/09/19 10:18:38
ちゃんとしたプロジェクトなら
configure等でhostとtargetを指定できる

899:デフォルトの名無しさん
07/09/19 15:15:18
そもそも、クロスと名の付く奴はどれもこれもむずかしい。
「クロスカウンター」狙ってできる奴などいないであろうほど難しい。
「クロスコンパイル」やり方がまず難しいし、それでいいのかどうかの判断も難しい。
「マクロス」ガンダムのパクリなのか何なのか、評価の付け方が難しい。
「セクロス」難しい。




900:デフォルトの名無しさん
07/09/19 15:25:33
GCC5になって3系で作ったときのバイナリの実行速度と4系の新機能がついに統合される夢を見たこともある。

901:デフォルトの名無しさん
07/09/19 15:33:37
ia32の最適化は限界なんだろ?
世の流れは爆速、爆熱CPUを求めてるみたいだね?

902:デフォルトの名無しさん
07/09/19 16:31:06
流れは爆数コア、爆並列だ。

903:デフォルトの名無しさん
07/09/19 16:31:48
え、OSがついていけてないような?

904:デフォルトの名無しさん
07/09/19 16:44:53
時代はオプテロン

905:デフォルトの名無しさん
07/09/19 16:55:13
>>903
そこで仮想化ですよ

906:デフォルトの名無しさん
07/09/19 17:48:48
いきなり豆知識 「殺菌灯」

ディパートメントゥストゥア(英語は発音大事だがこのように書くと非常にムカつくので注意が必要)などでよくある殺菌灯は
何か特別なものだと思い込んでいるのもいるが、あれは蛍光灯と同じである。
蛍光灯というのは水銀蒸気を封入し、そこに電荷をかけることで強力なUV-Cと呼ばれる紫外線を発生させる。
(封入されているのは水銀蒸気であるから、割れた蛍光管のそばにいるのは危険である)

蛍光灯と殺菌等の違いは、この紫外線をどう利用するかによって異なり、
蛍光物質で紫外線を吸収して可視光線に変換するのが蛍光灯
そういうことをせず、直にUV-Cを出すのが殺菌灯

というわけだ。
UV-C領域の紫外線は殺菌性に優れるが、皮膚に深く浸透して細胞まで害を及ぼすため
直視してはいけないのである。


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