GCCについて part7at TECH
GCCについて part7 - 暇つぶし2ch484:デフォルトの名無しさん
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領域の紫外線は殺菌性に優れるが、皮膚に深く浸透して細胞まで害を及ぼすため
直視してはいけないのである。

907:デフォルトの名無しさん
07/09/19 17:50:44
GCCとどういった関係が

908:デフォルトの名無しさん
07/09/19 21:09:59
>>907
>水銀蒸気で殺菌する

まで読んだ

909:デフォルトの名無しさん
07/09/19 21:35:13
↓で誘導されますた
マルチスレッドプログラミング相談室 その6
スレリンク(tech板)

【OS】
Debian Etch Linux kernel 2.6.18
【言語】
C pthread
【実行環境】
GNU gdb 6.4.90-debian
gcc (GCC) 4.1.2

gdbでのマルチスレッドのデバッグ中、任意のスレッドでステップ実行をしていると
とつぜんカレントスレッドが切り替わり、
ステップ実行していたスレッドの実行位置が失われる現象に遭遇します。
デバッグ対象のプログラムは、動作確認がとれているオープンソースのプログラムです。
原因、回避法等ご存知のかた、ご教示いただけないでしょうか

910:デフォルトの名無しさん
07/09/19 21:59:00
>>909
裏のブレークも引っかかった

911:デフォルトの名無しさん
07/09/19 22:12:45
>>910
仮に別スレッドのブレークポイントでスレッドが切り替わったとしても
threadコマンドで元スレッドにもどれますよね?
切り替わった時点でステップ実行していたスレッドの現在位置が??() (こんな表示)
になって元に戻れなくなってしまいます。

912:デフォルトの名無しさん
07/09/22 18:39:25
GCC4.2.2を使ってました。このスレを読んでいたら4.1か4.3にした方が良いような気がしてきたので
4.3をコンパイルしたらエラーもなく終わったのでインストール。
しかし。。。カーネルのコンパイルが出来ません(TT)
getnstimeofdayとかudivdi3とかのエラー関係がでます。おとなしく4.1系に戻そう・・

913:デフォルトの名無しさん
07/09/22 23:26:06
Linux(x86,32bit)で下記プロセサを使っている場合、-mXXX や -mcpu=XXX や -march=XXX には何を書くのが良いのでしょうか?

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 47
model name      : AMD Athlon(tm) 64 Processor 3200+
stepping        : 2
cpu MHz         : 999.876
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts fid vid ttp tm stc
bogomips        : 3537.29
clflush size    : 64


914:デフォルトの名無しさん
07/09/22 23:46:49
-march=athlon

915:デフォルトの名無しさん
07/09/23 00:26:42
-march=athlon64

916:デフォルトの名無しさん
07/09/23 00:59:43
>>913
ゲントとかいうLinuxのサイトからですが
URLリンク(gentoo-wiki.com)

917:デフォルトの名無しさん
07/09/23 01:33:38
じぇんつー

918:デフォルトの名無しさん
07/09/23 22:39:33
>>913
-march=k8 -msse3

919:デフォルトの名無しさん
07/09/23 23:43:46
頼むからmarchを「マーチ」ちゅうのやめてくれと。


920:デフォルトの名無しさん
07/09/23 23:47:09
マーチです

921:デフォルトの名無しさん
07/09/24 01:23:18
ですマーチ

922:920
07/09/24 01:34:19
予想通り

923:デフォルトの名無しさん
07/09/24 01:59:33
さりげな・く~♪

924:デフォルトの名無しさん
07/09/24 10:05:21 BE:23579377-2BP(1)
>>913
-march=native

925:デフォルトの名無しさん
07/09/24 18:27:32
gcc -Wp,hogehoge の-Wpって何をするオプションですか?

926:デフォルトの名無しさん
07/09/24 18:38:12
そんなんも知らんのか バカじゃねぇのw

927:デフォルトの名無しさん
07/09/24 18:42:32
質問を変えよう。

Fedoraのrpmのspecファイルを見ていると、CFLAGSに-Wp,-DXXX=YYYという指定をしている例がみられるの
だけど、単に-DXXX=YYYとしない理由は何か考えられますか?

gcc-4.1.2のinfoだと、-Wpはなるべく使うなと書かれているのだが...。
よろしくおねがいします。

928:デフォルトの名無しさん
07/09/24 18:43:53
>>926 よろしく。

929:デフォルトの名無しさん
07/09/24 21:57:37
天才926降臨期待age

930:デフォルトの名無しさん
07/09/26 12:27:49
MinGWの中の人がいつかきっとGCC3.4.6 for MinGWをリリースしてくれると信じてる。

931:デフォルトの名無しさん
07/09/27 00:33:49
MinGW

ゴールデンウィークが最小限なこと。
休みが一日しかないに違いない。

932:デフォルトの名無しさん
07/09/27 00:49:16
ゴールデンウィークなんて死語だぜ

933:デフォルトの名無しさん
07/09/27 00:50:02
ゴールデンウィークなんて(毎年)仕事だぜ

934:デフォルトの名無しさん
07/09/27 12:48:27
GCC online docs

ジーシーシー オンライン ドクス

なんだよドクスって
ドクスとか言うな!!

935:デフォルトの名無しさん
07/09/27 13:04:36
>>931
2008年や2014年の
 5月3日 = 土曜日
 5月4日 = 日曜日
 5月5日 = 月曜日
のことかー!!!

# でも4月29日の昭和の日が火曜日だから、4/26(土)・27(日)・28(月)・29(火)の連休もとりやすいんだよねw

936:935
07/09/27 13:06:58
# やべっ、忘れてた。法改正されたから、2008年や2014年は5月6日が振替休日!

937:デフォルトの名無しさん
07/09/27 14:59:21
掴もうぜ
ゴールデンボール

938:デフォルトの名無しさん
07/10/03 15:55:44
gcc4.2.2rcが先月末にあがってたので入れてみた。
マーチネイチブ、エムチュンネイチブ、何気にいいですね。なんかアプリの動きが早くなった。


939:デフォルトの名無しさん
07/10/03 16:05:31
>>938
>なんかアプリの動きが早くなった。
たぶん気のせいだよw

940:デフォルトの名無しさん
07/10/03 16:28:39
>>939
気のせいかなwww
4.2が正式リリースされてすぐに入れた時は逆に遅くなったような気がしたけど、今度のはいい感じなんだけど
なあ。mplayerなんかではgcc関連の値をセットしなくてもconfigureかけるとアプリが勝手に-mtune=nativeに
設定してくるね。

941:デフォルトの名無しさん
07/10/04 12:21:41
>>938
mtuneをエムチュンと読むのにmarchがマーチと読む心は?

942:デフォルトの名無しさん
07/10/04 22:06:39
>>941
エムアーチ

943:デフォルトの名無しさん
07/10/04 22:21:24
えむつね/えむあーち

944:デフォルトの名無しさん
07/10/04 23:02:36
むちゅーん
むあーき

945:デフォルトの名無しさん
07/10/04 23:41:23
むとーね
まるは

946:デフォルトの名無しさん
07/10/05 00:47:05
まーくエッチ

947:デフォルトの名無しさん
07/10/05 01:21:57
こうして日々GCCは進化していくのであった

948:デフォルトの名無しさん
07/10/05 17:34:00
エムアークゥィティクチュワ!

949:デフォルトの名無しさん
07/10/05 18:45:18
ウィキピィーディア

950:デフォルトの名無しさん
07/10/06 18:25:57
gccの--paramって、gcc4から使えるオプションだっけ?
あと、paramってコマンドラインでしか指定できないの?#pragmaで指定できると嬉しいのだが。

951:デフォルトの名無しさん
07/10/06 18:32:43
>>950 3でも使える。pragmaの件は知らん。

952:大槻
07/10/06 19:00:47
すべてはpragmaのせいです。

953:デフォルトの名無しさん
07/10/07 00:18:12
ストールマンって今何してんの?
まだemacsでオナニーしてんの?

954:デフォルトの名無しさん
07/10/07 08:52:40
秀○やSAKURAでオナニーするよりよっぽど良いべ。

955:デフォルトの名無しさん
07/10/07 09:15:57
少なくとも人の役にたってるオナニーだからいいじゃねぇか

956:デフォルトの名無しさん
07/10/07 09:38:54
公開オナニーてっこと?

957:デフォルトの名無しさん
07/10/08 01:29:18
あるデバッグオプションを有効にしてコンパイルすると、
Segmentation faultで落ちたときにソースのファイル名と
行番号を表示するという機能があるらしいんですが
どのオプションでしょうか

958:デフォルトの名無しさん
07/10/08 01:39:02
>>957
OSがわからんからLinuxだとエスパー。

行番号情報をバイナリに埋めるには、gcc -g だ。できあがったバイナリをstripしないこと。
% file ./your_broken_software して、not stripped と表示されることを確認。

でも、SEGV食らったときに自動で落ちた場所を表示するコードを埋める機能はgccには無いよ。
一部のLinuxには、catchsegvというコマンドがついてるからそれ使え。

% catchsegv ./your_broken_software


959:デフォルトの名無しさん
07/10/08 01:46:54
うそだ、ごめん。catchsegvだと、PCの値とかバックトレースはでるけど、行番号は出ないね。
素直にgdb上で実行するのがよいと思うが?



960:957
07/10/08 02:39:57
>>959
catchsegvか・・・ オッケー、刻んだ!

961:デフォルトの名無しさん
07/10/08 03:56:23
PCがわかれば addr2line -e a.out pc で行番号わかるよ。

962:デフォルトの名無しさん
07/10/08 09:29:06
$ gcc -g foo.c
$ gdb --batch -ex 'run あれば引数' ./a.out


963:デフォルトの名無しさん
07/10/09 11:05:30
gccのループ展開の抑制について質問させてください。

コードサイズの評価をしようとして、常用している -O3 に
ループ展開の抑制だけを加えて -O3 -fno-unroll-loops -fno-peel-loops と
したんですが、ループ展開を止めてくれません。どうやればいいんでしょう?

gccのバージョンは4.1.2(tarballから展開・パッチなし)、
実行環境はi686-pc-linux-gnuとpowerpc-linuxです(どちらでも現象は同じ)。

問題のコードを直接晒せないので、再現コードを書きます:

 #define N 5

 int foo(int a[])
 {
  int t = 0, i;
  for (i = 0; i < N; i++) t += a[i];
  return t;
 }

上のように定数回の小ループがあって、ループ回数が少ないと展開するようです。
展開した場合は、ループ構造は削除され、中身が回数分反復されます。

-O2 とすればループ展開を行わなくなります。
でも、ループ展開以外の最適化は -O3 のままにしておきたいんです。


964:デフォルトの名無しさん
07/10/09 11:47:28
トゥーチャノー(英語は発音大事)での、話のループを抑制したい。
こればっかりは、流れ石のGCC様の-Oも効かんでのう~ゴホゴホッ(持病の癪が)

965:デフォルトの名無しさん
07/10/09 12:06:44
>>964
癪は胸部腹部の痛みの総称なので、癪で咳き込む人はいない

966:デフォルトの名無しさん
07/10/09 12:38:41
ボケ殺し……

967:デフォルトの名無しさん
07/10/09 21:19:18
GCC 4.2.2 リリース age

968:デフォルトの名無しさん
07/10/09 21:51:46
>>963
4.1.2で色々やってみたけど抑制できなかった

969:デフォルトの名無しさん
07/10/09 22:02:20
そこだけソース別けて-O2でコンパイルするとか...

970:デフォルトの名無しさん
07/10/09 23:04:35
>>967
了解。今から長いコンパイルを開始します。

971:963
07/10/10 00:53:43
>>968
どもです。お手数おかけしてます。やっぱり地味に難しいんでしょうか。

>>969
避けてしまうのはどうにでもできるんですが、ほしいのは
「このコードをこういう条件でコンパイルするとこういう結果になります」という
コード評価でして。コードの一部だけ最適化条件を変えるのは
できるだけしたくない、という事情です。
ただ、ここで詰まっていてもしょうがないので、
適当なところで見切りをつけますけどね。全体を-O2にしてしまうとか。

4.1.2のmanを調べたら「-O3は-O2に-finline-functions -funswitch-loops
-fgcse-after-reloadを足したもの」と書いてあったのですが、
-O2にこれらを足しても-O3と等しくはなりませんでした。うーむ。

972:デフォルトの名無しさん
07/10/10 02:02:49
-O3 -fno-unroll-loops でいいんでないの?

973:デフォルトの名無しさん
07/10/10 04:53:20
>>971
manは結構いいかげんなのでソースを当たるべし。

974:デフォルトの名無しさん
07/10/10 08:52:16
さんざん既出だが、
自分で細かくコントロールしたければ、
-O3, -O2などを使ってはいけない。

975:868
07/10/10 11:29:11
逆に考えて -O2 に -O3 で追加されるような -fhogehoge 追加してけば?

976:私立ミンミンゼミ
07/10/10 12:24:09
 

977:デフォルトの名無しさん
07/10/10 15:01:37
念のため聞くけど、>>972とか>>975はギャグだよね……??

978:デフォルトの名無しさん
07/10/10 15:18:43
>>975の何がおかしいのかわからない。

979:デフォルトの名無しさん
07/10/10 15:22:26
きっと、-fhogehogeって名前のフラグがあると思ってるんだと推測。

980:デフォルトの名無しさん
07/10/10 15:29:25
>>978-979
>>971に既にその方法でやってるが、manでは正確ではないようだ
という話が出てるのに>>975を敢えて書くってのは自爆ギャグとか
かと考えないと、辻褄が合いそうにない。
ま、ギャグだとしても全然面白くないけど。

てか、おまえらも注意力散漫なんだな。

981:デフォルトの名無しさん
07/10/10 15:35:05
GNU製品のmanなんて宛てにしないでソースで正確なの調べろよ。

982:デフォルトの名無しさん
07/10/10 18:33:46
GNU製品のmanなんて信用せずに素直にinfo見ろよな

983:デフォルトの名無しさん
07/10/10 18:58:49
GNU製かどうかは関係ない。
ソースから生成してるのでもないかぎり文書は不正確なもの。

984:デフォルトの名無しさん
07/10/10 19:45:03
いや、info見ろよ。

985:デフォルトの名無しさん
07/10/10 20:57:03
infoもこう書いてあるけど
`-O3'
Optimize yet more. `-O3' turns on all optimizations specified by
`-O2' and also turns on the `-finline-functions',
`-funswitch-loops' and `-fgcse-after-reload' options.

986:デフォルトの名無しさん
07/10/10 21:53:56
>>983
でもさ、それって実装であって設計じゃないよね
ソフトウェア工学的にはうんこだよな

987:デフォルトの名無しさん
07/10/10 22:31:46
>>986
いまだにMDAとか言ってる位に仕様書からの実装合成はhype気味なんだから
一介のフリーソフトがそこまでできてなくてもしょうがないだろう。だって人間だもの(みつを

988:デフォルトの名無しさん
07/10/11 08:03:19
>>975
-O2使ったとたんに他の指定は上書きされるのが現実です。

個別に設定しても必ずその通りになるものではないし。
最適化技法間の制約があるので。

暗黙に無効、有効にする時に、Warningも出しません。
ソース読むしかないんです。

989:デフォルトの名無しさん
07/10/11 09:27:31
どの最適化をするかくらいならすぐ読めるよね

990:963
07/10/12 00:58:21
ソースを読みました。opts.c の decode_options() に最適化オプション読み込みの
基本部分がありました。大雑把には次のような構造でした。

 for (i = 1; i < argc; i++)
  { /* すべての-Oxオプションを通し読み */ }
 if (optimize >= 1)
  { flag_hoge = 1; ... } /* -O1以上でのフラグ設定を適用 */
 if (optimize >= 2)
  { flag_geho = 1; ... } /* -O2以上でのフラグ設定を適用 */
 ...
 handle_options(argc, argv, ...); /* 各オプションを処理 */

optimize >= 3 では、flag_inline_functions と flag_unswitch_loops と
flag_gcse_after_reload を 1 にしていました。
その箇所だけ読むとmanやinfoの記述は正しいことになるんですが、はて。
結局追いきれませんでした。

それから、>>988の通り、フラグ変数を書き換えてもその情報をどこにも伝えません。
ちょっと不便なような。。。

で、別解なんですが、「-O3 --param max-completely-peeled-insns=0」
と指定してpeelingを止めてしまえば目的を果たせることがわかりました。
この指定で行こうと思います。


991:デフォルトの名無しさん
07/10/12 01:22:28
いや、該当するフラグ変数を全ソースで検索しないと。
コンパイル中にフラグの値変ることもあるし。

992:デフォルトの名無しさん
07/10/12 02:23:32
>>991
ヒントありがとうございます。flag_unroll_loops と flag_peel_loops に
当たりをつけて探してみました。これだろうな、ってのが出てきました。

tree-ssa-loop.c:
static void
tree_complete_unroll (void)
{
 if (!current_loops)
  return;

 tree_unroll_loops_completely (current_loops,
                flag_unroll_loops
                || flag_peel_loops
                || optimize >= 3);
}

"optimize" でも軽く眺めてみましたが、フラグではなく最適化レベルの数値を
最適化の適用条件にしている箇所はそれなりに珍しいようです。


993:デフォルトの名無しさん
07/10/12 08:47:02
> optimize >= 3

ワラ
イヤだねー

994:デフォルトの名無しさん
07/10/12 09:03:27
将来を見据えた設計なのでは?

995:デフォルトの名無しさん
07/10/12 12:37:26
>>994
断言できる。何も考えてないだけ。

996:デフォルトの名無しさん
07/10/12 22:06:08
>>987
いや、ストールマンって趣味ならとても楽しくやりそうだけど
絶対に一緒に仕事やりたくない人種だよな

997:デフォルトの名無しさん
07/10/12 22:10:13
次スレ建てられなかった
誰か頼む

998:デフォルトの名無しさん
07/10/13 00:08:45
GCCについて part8
スレリンク(tech板)

999:デフォルトの名無しさん
07/10/13 00:36:21
>>998

次スレでもみんなよろしく

1000:デフォルトの名無しさん
07/10/13 00:37:18
1000


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