1 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:07:39 ] 史上最強かもしれないツール、GCC(GNU Compiler Collection)について語るスレ。 GNU本家のGCCページ gcc.gnu.org/ Binutils - Collection of binary utilities ←これも必要だぞ。 www.gnu.org/directory/GNU/binutils.html GNU Binutils sources.redhat.com/binutils/ GCC online documentation gcc.gnu.org/onlinedocs/ Installing GCC gcc.gnu.org/install/ GCC Timeline gcc.gnu.org/releases.html#timeline Calendar gcc.gnu.org/develop.html#timeline 前スレ GCCについて part7 pc11.2ch.net/test/read.cgi/tech/1145357824/l50
487 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:23:04 ] いや、この場合はGCCの規格が悪いと思う。 普通に考えればtypenameをキャスト時にするのはおかしいもの。 次に>>477 が詰まるのは、wchar_tかなw wchar_tを取りうるって言ってるし。 GCCのwchar_tは欠陥品な上、 文字コードの統一の問題が・・・w
488 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:02:46 ] >>487 5.4 Explicit type conversion (cast notation) 8.1 Type names 7.1.5.3 Elaborated type specifiers くらい読めよ。 あと「GCCの規格」なんてバカな言葉は使うな。 どうせいうなら「GCCの仕様」あるいは「GCCの実装」だ。 wchar_tもいい加減なこと言ってるよなあ。
489 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:46:45 ] 典型的な、コンパイラとライブラリの区別がつかないひと
490 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:59:02 ] いや、GCCの仕様は馬鹿だろ あれほど必要の無い理解しがたい仕様をつめるのは 頭の悪い俺には理解できんよ(笑)
491 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 16:00:39 ] >>489 typename 修飾子って本来ライブラリの管轄じゃないだろ・・・
492 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 16:03:54 ] キャストの問題もライブラリの管轄とは思えんが・・・
493 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:34:46 ] wchar_tの話だろ。
494 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:39:14 ] >>484 最初からエラーメッセージ張らない人だから、 そもそもエラーメッセージを読まない人なんじゃないかとw
495 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:59:12 ] むしろ、エラーメッセージしか見なかったんだろ。 最初の質問で、エラーの内容は理解してると思われる。 ただ、エラー以外をみなかった。ということだろう。 いやね、俺もその傾向あるからわかるんだが コンパイラってだいたいロクなメッセージ伝えてこないから エラーそのものしか見る気しないのよ。そのエラーすら別の箇所による問題によって 引き起こされてたりするので、そのまんま信じるわけじゃないし。 1つエラー出ると、大量にどうでもいいメッセージが出るから、頭の中でフィルタかけないとエラーは解決できない。
496 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:22:53 ] 寧ろ、そんな発想だからフィルタが必要なんだろ。
497 名前:458 mailto:sage [2008/07/18(金) 09:44:05 ] >>481 そのファイルがコンパイルされた日時ならそれでいいけど・・・
498 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:12:00 ] 何が望みなんだかわかんねえ
499 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:25:03 ] >>497 Makefileで常にコンパイルするファイルをそれにしておけばいいんじゃね
500 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 12:14:13 ] >>498 消えろ
501 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 12:17:07 ] 俺もよくわからない。 .oが出来た日時をCのソースから利用したい。 a.outが出来た日時をCのソースから利用したい。 どっちなの? 前者なら>>481 でFAでしょ? 後者なら>>464 の方法で出来るよね。 もっと違うこと?
502 名前:458 mailto:sage [2008/07/18(金) 13:10:48 ] >>501 バージョンを取得する関数のあるソースを hoge.c としたとき hoge.o を他の全オブジェクトに依存させればいいのかな? やってみるよ。
503 名前:458 mailto:sage [2008/07/18(金) 13:15:23 ] できた。ありがとう >>501 >>499 コンパイルの必要が無いときはコンパイルしたくないんですよ。
504 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:04:35 ] 501だが、>>501 と>>502 眺めて 30秒考えてようやく仕様が分かったw >>501 の後者って事だよね。 >>464 の言っている別解だが、 .PHONY: hoge.o これで「hoge.o is up to date」になることなく、 hoge.oが必要とされれば、タイムスタンプ比較をショートカットして、 毎回ルールに基づいて生成しようとする。で、 a.out: $(OBJS) hoge.o としておけばいい。
505 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:56:12 ] >>504 それソースが更新されてないときでも、生成されね?
506 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:17:45 ] a.out が更新されたってことは生成必要なんじゃ?
507 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:50:47 ] a.out: $(OBJS) $(COMPILE) $(CFLAGS) hoge.c $(LINK) $(OBJS) hoge.o
508 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:14:44 ] BCB使っていて興味本位にGCC触ってみたんですけど 下のコードって通らない、というか間違った書き方なんでしょうか? 環境はubuntuのg++4.1.3です template< typename T > class test { friend class test< T >; <<ここで怒られてる public: int aaa; };
509 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:20:07 ] エラーメッセージは? 読んだ?
510 名前:508 mailto:sage [2008/07/18(金) 17:38:43 ] 〜 error: class 'test<T>' implicitly friends with itself と出ていました。 英語もわからずGUIでしか操作したことないとGCCなんて使うこと出来なさそうだなぁ。
511 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:45:22 ] 「自分自身はいちいち宣言しなくてもfriendされてるのと同じことできるよ」と言っています。
512 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:51:40 ] ええええ! ・・・実体が違うなら同じクラスでもpraivateに触れないと思ってました。 ありがとう!
513 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:56:11 ] なんか .PHONY が誤解されてる気がする。
514 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:00:41 ] >>512 ちっとは英語の勉強しようよ。なんだそのスペリングミスは。
515 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:08:09 ] わざとじゃねーのか。 さすがにキーワード間違えないだろ
516 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:32:08 ] playmateに触れたい
517 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:32:51 ] あるオブジェクトファイルがリンクされたかどうかって・・・というか、 あるシンボルの中身が存在するかどうかってソースレベルでチェックできる? 存在しないシンボルを参照してもリンカがエラーを吐かないことが前提で・・・
518 名前:517 mailto:sage [2008/07/23(水) 00:47:49 ] __attribute__((weak_import)) が自分のやりたいことに合致しそうだけど サポートしてるのは MacOS X だけっぽい 諦めてほかの方法を探すかな
519 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:29:49 ] 何をしたいのかがわからない。 実行時にシンボルの中身が存在するか判定したいんだったら遅延リンクでもいいんじゃね?
520 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:48:10 ] >>517 つ dlopen(3)
521 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 06:42:03 ] >>517 オブジェクトのリンク状況つうのは、 foo.c #include <stdio.h> int bar_magic = 0 __attribute__ ((weak)); int is_bar(void) { return 0; } int main(void) { printf("%d\n", is_bar()); return 0; } bar.c int is_bar(void) { return 1; } とかやって、 $ gcc -o foo foo.c && ./foo $ gcc -o foo foo.c bar.c && ./foo の結果が変わるでいいんですか?
522 名前:517 mailto:sage [2008/07/23(水) 19:07:38 ] >>519 質問の仕方が下手ですまん。 最終的には組み込む予定のとある関数を、一時的に外したいが #ifdef などでソースを切り分けたくない。 シンボルの中身の有無がプログラム中から判別できれば、 makefile 側でリンクするオブジェクトを 管理するだけなので楽かなと思った。 >>520 条件の後出しで申し訳ないが、組み込み環境なので動的リンクはちょっときつい。 >>521 weak_import じゃなくて weak で良かったのか。どうもありがとう! int weak_func(void) __attribute__ ((weak)); /* int weak_func(void) { return 1; } */ int main(void) { if (weak_func) { dbg_print("Function exist\n"); } else { dbg_print("Function not exist\n"); } return 0; }
523 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:59:40 ] リンクエラーは解決したか?
524 名前:517 mailto:sage [2008/07/23(水) 23:48:01 ] >>523 俺宛てかな?実はそこが問題になるとはあまり考えてなかった。 中身が無いことを前提にしたシンボル参照をソースで意図出来れば、 当然リンカもエラーは吐かないだろうと思ってたので。(そしてその通りになった) でも気にしてくれてありがとう。 今後の予定としては、間違えて同名のシンボルを別のソースで定義してしまい 関数が上書きされたことに気づかずバグに苦しむ。というストーリーを計画しています。
525 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:14:00 ] GCCのコンパイルがおわらねぇ
526 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:17:21 ] まあ環境によっては2日仕事だな
527 名前:デフォルトの名無しさん [2008/07/24(木) 18:37:23 ] マジか… 400MHzのアナルスペックで3時間くらい放置してる絶望
528 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 19:31:19 ] 余計なの削除してやり直すか…
529 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 20:51:42 ] >>525 もし余ってるマシンがあるなら、distccで分散コンパイルとかどうよ。 C++だとエラー出まくりで、コンパイルできなかったりするけど。(これは俺の設定が悪いのかな?)
530 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 22:41:16 ] make LANGUAGES=cで放置 メインのPCは修理に出してしまったから、400MHzの一台しかないんだよ… やっと3時間くらいでstage1が終わったから、朝までつけっぱなしで終わりそうかな マルチコアCPUなら-j 2とか付けたいんだけど…
531 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 09:25:12 ] >>530 ひとつでも-j 2はこうかてきめんだよ。 HDDに書いてる間CPUひまだし
532 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:15:29 ] 今まで-jなんて知らなかったorz クアッドコア使えるのに。
533 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:26:22 ] な、なんだってー(AA略
534 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:21:39 ] ーj10
535 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:33:24 ] 軽く15年前からあるオプションだよなw
536 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:02:57 ] エラーでるわ 素直にバイナリ落としてきた
537 名前:デフォルトの名無しさん [2008/07/25(金) 20:03:33 ] OpenOffice.orgは非常に大きなプログラムなので、 RPMファイルの作成には長い時間が必要となる。 1GHzのCeleronで実行したところ、14時間以上かかった。 www.atmarkit.co.jp/flinux/rensai/linuxtips/642opt686.html
538 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 21:28:10 ] C言語で書かれているプログラムをAlphaの命令セットで実行できるように クロスコンパイルするにはどうすればいいのでしょうか まず何が必要なのでしょうか? とりあえずGCC,binutil,glibcを用意してみたのですが…
539 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:05:49 ] >>538 linux.bytesex.org/cross-compiler.html でどうよ?
540 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 05:47:44 ] gccやbinutilもってきたなら中のドキュメント読めば、つーか configure --helpすれ。
541 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 09:35:55 ] >>539 すげーどめいんw
542 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 10:15:19 ] んー。「エンディアンネス」のくだけた表現で、向こうではわりかし普通よ? ttp://www.catb.org/jargon/html/B/byte-sex.html
543 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:02:15 ] >>541 もしかして: www.bitesex.com
544 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:37:15 ] >>541 vmware に NetBSD 入れて /usr/src/build.sh -m alpha tools
545 名前:544 mailto:sage [2008/07/27(日) 19:38:37 ] >>541 って、すげードメイン、か。すげーめんどいん、に見えた。 逝ってくる。
546 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:48:13 ] すげーメイド!
547 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:34:26 ] いろいろアドバイスありがとうございます とりあえずGCC,binutil,glibcだけでなんとかなるor541の方法ってことでOK? binutils入れてみようとおもったのですがconfigureで HOST=~には使っているマシンの 状況を書けばいいのかな? それともプログラムのバイナリを実行させる先の 事をかけばいいのか… HOST=CPU-COMPNY-SYSTEM ってことらしのですが CentOSでPentium4のマシン使っている場合だとx86-centos-linuxで いいんですかね?
548 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:46:44 ] >>547 カナディアンクロスやるんじゃなければ ホストは configure が勝手に発見してくれるので /path/to/configure --target= で桶 いろいろほげってダメだったらまた濃い
549 名前:548 mailto:sage [2008/07/29(火) 00:50:02 ] ちなみにこのへんの GNU toolchain は カナディアンクロスもある程度考慮されてるので "Linux ホストで、MipsターゲットのCygwinバイナリを作る" てな感じも(必要な知識があれば)可能。 ↑経験談
550 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 21:50:20 ] GCCは変態だなぁ(褒
551 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 07:44:13 ] クロスコンパイルはGCC & binutilsの独擅場だからねぃ
552 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 03:13:53 ] このスレには優しい神が宿っているようだ。
553 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 02:39:23 ] >>550 変態なgccだなあ
554 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:49:35 ] 4.3.2
555 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:09:13 ] GCCは最高のクロス開発環境だなあ
556 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:49:53 ] GCC に #pragma optimize はないんですよね? ある大きな数値計算プログラムがあって、 全体としては -O や -O2 など最適化はしたい。 けど一部、計算誤差などを考慮した、 計算の順番を変えてほしくないコードがある。 Intel Compiler などは pragma でソコは最適化しないように 回避できるんだけど、GCC はどうしようかと。 なんか手段あります? ソースを分けて、そこだけ -O0 にするしかないのかな?
557 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 21:07:41 ] > ソースを分けて、そこだけ -O0 にするしかないのかな? と思う。
558 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 21:17:06 ] >>556 -fno-fast-math か?
559 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 00:43:26 ] 556とは別人なんだがinline関数なんかの場合はそこだけコンパイラオプションを変えるわけにもいかないし 精度は保ちつつ最大限速くしてもらいたいからvolatile使うのも嫌だしとワガママ言ってしまうことはあるね。 Cを高級アセンブラとして使っているときに 局所的に自分でスケジューリングした順序で動いて欲しいこともあるし。
560 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 13:43:44 ] >>556 研究や業務で使う道具としては悩むよりもicc使っておいた方が良い場合に該当するんじゃなかろうか?
561 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 16:33:28 ] volatile とかうまく使えないんだろうか
562 名前:デフォルトの名無しさん [2008/09/02(火) 07:14:38 ] GCCでもPGOであるんですか?
563 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 07:57:22 ] 最近のならあるよ -fprofile-generate/-fuse-profile
564 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 07:57:55 ] まちがえた-fprofile-useね
565 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 16:26:38 ] フリーなのにすごいですね…
566 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:06:49 ] 実績だけは(アーキテクチャによっては)存分にあるからな。
567 名前:デフォルトの名無しさん [2008/09/03(水) 02:16:10 ] __artificial__アトリビュートを調べていたら、下のドキュメントが あったけどなんかいまいち理解できん。 わかりやすい日本語で解説してくれ! artificial This attribute is useful for small inline wrappers which if possible should appear during debugging as a unit, depending on the debug info format it will either mean marking the function as artificial or using the caller location for all instructions within the inlined body.
568 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:21:28 ] この属性は小さなインラインラッパー関数に使いよい。 その関数とはどういうものかというと、デバッグ中には 関数の中に入らずに単体として扱われるのが望ましいもの。 この属性がどう実現されるかというと、 デバッグ情報フォーマットによるが、 関数にartificialというマークをつけるか、 またはインライン化された関数本体中の呼び出し位置を使う (どう使うのかは書いてない)ことになるだろう。 ……と理解した。 デバッグの必要のないような機械的に生成したラッパーインライン関数 なんかに使うといいんでないのかしら。
569 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 04:14:54 ] $(GCC)/gcc/config/i386/emmintrin.h みてね。
570 名前:567 mailto:sage [2008/09/04(木) 00:45:24 ] >>568 よく分かった!ありがとぅ! >>569 まさにそれを見てて気になったんで調べてた とりあえず、*mmintrin.h は非常に使いづらいんで 自前でラッピングしようと思った次第。 それにしても、GCCのアトリビュートは書きにくい。 アトリビュートはC#の書き方がいい感じ。 [Align(16)] int hoge = 12; とか。
571 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:29:14 ] gccの方が何に掛っているかはっきりする。
572 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 03:11:43 ] gccでコンパイルしたバイナリを販売したらダメなんだろ? イミネー
573 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 03:21:42 ] いや、コンパイルしたもの自体は問題にならない。 GPLなソースが混入してない限り。 だがそれが回避しにくいように念入りに作られてるんだわこれが…
574 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 03:29:58 ] それと仮にGPLだったとしても、GPLなら販売禁止ってわけじゃないよ。屁理屈みたいだけど。
575 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:03:45 ] >>572 どこでそんな嘘聞いてきたんだ。
576 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:07:21 ] >>573 作られてない。そもそもふつーにコンパイルする範囲ではGPLの影響は受けない。 お前のプログラムにGPLが感染するのは、コンパイラ関係無しにGPLのコードを混入させたときだけだ。
577 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:12:17 ] >>572-573 なのこの頭の悪いしったか連中… libcがGPLのときのバイナリと混同でもしているのか?
578 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 05:15:05 ] 4.4がstage3になったのか。 リリースは来年ですかねえ。 >>577 libgccが例外なしGPLとか。
579 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 06:12:30 ] In addition to the permissions in the GNU General Public License, the Free Software Foundation gives you unlimited permission to link the compiled version of this file into combinations with other programs, and to distribute those combinations without any restriction coming from the use of this file.
580 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:32:00 ] GNU一般共有使用許諾における許容に加えて、フリーソフトウェア基金はこのファイルのコンパイルされたバージョンを他のプログラムへの組み合わせにリンクして、このファイルの使用から無制限に来るそれらの組み合わせを広げる無制限な許可をあなたに与えます。
581 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:30:47 ] しかし、このスレは定期的にGPLの話がでるな。 とりあえず、 ・GLPのソースを含んだ実行ファイルから利益を得ることは制限されない。 ・ただ、ソースを見せろと言われたら全て見せなくてはならない。 ・それは不便だからLGPLがあり、その場合は以下の条件を満たせばソースを 見せる必要はない。 ・使用しているLGPLなソースを第三者が修正して、再度、配布しているもの と同等の実行ファイルを作成出来なければならない。 ・ダイナミックリンクの場合は特になにもする必要はないが、 スタティックリンクの場合は、リンクに必要なオブジェクトファイル (具体的には、*.o)を提供しなければならない。 ・同等の実行ファイルを作成出来ることが必要という縛りがあるので、 LGPLだからと言ってこっそりコピペするのは(・A・)イクナイ!! (結局ソースを提供しなければ同等にならない可能性があるので。) と理解している。
582 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:37:10 ] GPLのプログラムがLGPLのライブラリを読み込んだとき、 LGPLのプログラムのソースの公開の義務は発生しますか?
583 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 01:01:47 ] GPLのプログラムとリンクした時点で、ライブラリもGPLになります
584 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 01:42:31 ] >>583 なんですとぉ! 自作ツールでアーカイバプロジェクトの スタティックライブラリをリンクしたとする 自分のものでもないしソースもないけど勝手にGPL? d3d9x.lib とかスタティックライブラリじゃん 困らね?
585 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:12:44 ] おいおい、めちゃくちゃだな。 >>582 GPLのプログラムもLGPLのプログラムもソースを公開する義務がある。 悩む必要はまったくない。公開してくれ。 >>584 その自作ツールのライセンスはなんだ? ソースを公開したくないんだったら、LGPLのライブラリをリンク してれば大丈夫だ。ライブラリがGPLの場合は無理。 > d3d9x.lib とかスタティックライブラリじゃん > 困らね? それはまた違うラインセンスになってるだろ。 詳しくは知らんが、それをちゃんと調べるべき。
586 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:38:31 ] >>584 全体をGPLにできる場合のみ、GPLのコードを基に著作物を形成・複製・頒布することが許諾される 条件を満たせないなら、GPLの使用許諾は得られない
587 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:26:44 ] >>584 勝手じゃないだろ。使うソフトウェアのライセンスは読もうよ。
588 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:43:21 ] 非GPLなプログラムからGPLなライブラリを使うときは 非GPL部分とGPL部分とでプログラムをわけて、 ソケット通信をすればおk まあGPL部分は諦めて公開する必要があるけど どうしても非公開にしたいコアな部分は非GPLにできる。
589 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 05:51:49 ] >>584 いや、d3d9x.libってCygwinかなんかの?LGPLなの? 困るんならMSのライブラリとコンパイラ使いなよ。 または、d3d9x.lib相当の機能は、自分で作らないと。 他人の成果物使ってんだからさ。 ライセンスに従えない人間に使われるのてむしろ困るのは、 ライブラリを作ってる側だし。
590 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:03:04 ] >>588 そのソケット通信は確実に白なの? 前にそんなことが議論になったみたいだけど、 結論がどうなったか知らないんで。
591 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:42:28 ] >>588 の例だとGPL部分が不可欠ならばリンクしてなくても 派生物としてソースを公開する必要があるという議論だったと思う。 >>589 プロプライエタリなOSにGNUな開発環境を存在させるため OSが提供するライブラリに関してはプロプライエタリでもGPLの公開義務の 対象外。
592 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:43:50 ] 分かりにくいなぁ。GPLって。 このライセンスは、GNUが本来目指していた目的に合致するのだろうか・・・・
593 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 08:30:23 ] 本来の目的って、すべてのソフトを未来永劫にわたってオープンソース化する 超過激思想だぞ? だからこそこんな感染性のあるライセンスにしたわけで。
594 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:01:14 ] そのへんは「オープンソース」界隈の連中が意図的にか天然か 勝手に話を混ぜ込んでいたりするからなw
595 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:34:48 ] >>582 *フリーではないライブラリを利用するフリーソフトウェアを書いているのですが、GPLを適用した場合どのような法的問題が発生するでしょうか? www.gnu.org/licenses/gpl-faq.ja.html#WritingFSWithNFLibs *「単なる集積」と「二つのモジュールを一つのプログラムに結合すること」の違いは何ですか? www.gnu.org/licenses/gpl-faq.ja.html#MereAggregation
596 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:38:50 ] >>592 根本はとってもシンプル 結局はバイナリ公開したければソース出せボケ いろいろな抜け道を塞ぐために条文追加するはめになっただけのこと ストールマンの最初の動機と何も変わってないw 思想先行どころか実利的なGPL
597 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:55:43 ] >>591 d3d9x.libはOSのライブラリってこと?スタティックなライブラリが? 話が唐突で全然意味がわからん。 てっきり、GCC用のLGPLなライブラリだと思ったんだが。 あと、GPLならGPLが適用されるし、LGPLならLGPLが適用されるっしょ。 OSがプロプラとか関係無い。
598 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:54:20 ] すくなくともd3d9x.libについて調べればそういう話は出てこないとおもう。 簡単に言えば、Direct3Dについてくる、MSの3Dライブラリみたいな。
599 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:26:57 ] 例えば、GPLな数値計算ライブラリと Direct3D の組み合わせで計算結果を視覚化するソフトウェアがあるとする このソフトウェアを α とする α 内で使用されている D3DX* 系の関数は DirectX SDK の d3dx9.lib スタティックライブラリに含まれている スタティックライブラリに含まれる部分のソースが無いので 出来上がった α を頒布することはできない これで合ってる?
600 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:37:12 ] >>591 それが詭弁に過ぎないことは世の中のWebブラウザを見てればわかる
601 名前:599 mailto:sage [2008/09/07(日) 21:11:52 ] >>599 はgcc関係なくて、GPLについてだけなのでスレ違いっぽいですね
602 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:23:56 ] >>600 わからん。具体的には?
603 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:46:58 ] mingwのgccがなかなか4系列にならないのはなんで?
604 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 22:11:01 ] >>603 4系列だとpchのテストが通らないからとか?
605 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 05:30:18 ] >>598 あー、d3dx9.libの事を言いたかったのか。 てっきり、d3d9x.libっていうCygwin用のdllラッパーか何かかと思った。 じゃあ、>>584 は何を困ってんだ?自作ツールを公開したいってことか?
606 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 13:47:08 ] d3dx9.lib ってスタティックリンクライブラリなの? DLL用インポートライブラリじゃなくて?
607 名前:デフォルトの名無しさん [2008/09/08(月) 13:48:05 ] スタティックリンクライブラリ
608 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 14:24:42 ] そうなんだ。Thx!
609 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:32:03 ] GCC4.4 が stage 3 になったな
610 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 04:06:10 ] どちらにしろOSの機能を使うためにOSベンダが提供しているものは使って大丈夫。
611 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 05:53:39 ] GPLの何項にのってるの? >どちらにしろOSの機能を使うためにOSベンダが提供しているものは使って大丈夫。
612 名前:デフォルトの名無しさん [2008/09/09(火) 07:41:32 ] >> 611 ちょっと前のレスも読めないの?
613 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:00:16 ] >>612 >>611 はGPLを読んだことすらないだろ。読んだことがあるなら 述べる主題によって項が立てられているのだから>>611 みたいなこと いちいち聞くまでもないと理解しているはずだから。
614 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 22:04:22 ] 組込み以外で、何度もオブジェクトを小グループ単位で スタティックリンクし、最後にlibxxxx.aを作る利点というと 何が思いつきますか
615 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 01:15:36 ] libxxxx.aを作るのはスタティックリンクちゃいますえ
616 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 01:21:56 ] libxxxx.aの中の関数を置き換えられる
617 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 21:01:57 ] C++のコードを-Weffc++を付けてコンパイルしたら、警告が出まくった男がいたんですよー。 よく見るとSTLのヘッダーファイルから発生してるやないかー 俺のせいちゃうやんけー 男は黙って ただの配列
618 名前:デフォルトの名無しさん [2008/09/28(日) 18:19:32 ] export CPPFLAGS="-fprofile-genereate" export LDFLAGS="-fprofile-genereate" make PGOつかいたいんですけど、 上のとおりにやったらcc1.exeっていうのが -fprofile-genereateなんてしらねーよ!って怒るんです。
619 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 00:39:23 ] そりゃそうだろ。
620 名前:デフォルトの名無しさん [2008/09/29(月) 03:46:49 ] gcc (GCC) 4.1.2(Linux)では、 構造体の代入はmemcpyを呼んじゃうもんなんですか? 32bitマシンでは4バイトずつのコピーを期待していたので。
621 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 05:55:21 ] >>620 gcc 4.3 or laterを使いましょう。
622 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 07:48:17 ] gcc って、-g で最適化(-O2など)が阻害されるようなことがあるの? ずっとないと思ってたけど、気になってきた。
623 名前:デフォルトの名無しさん [2008/09/30(火) 08:33:04 ] >>619 何でですか?
624 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 08:34:55 ] >>621 ありがとうございます。試してみます。
625 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 08:38:57 ] >>618 -pg でどう?
626 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 09:10:50 ] >>623 目が腐ってるの? 頭が腐ってるの?
627 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 09:29:35 ] genereateってどういう意味だw
628 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 11:04:06 ] ニートだから最後は延ばしたくなるんだろうな。
629 名前:Google先生 mailto:sage [2008/09/30(火) 11:07:56 ] fprofile-genereateの検索結果 2 件中 1 - 2 件目 (0.52 秒) もしかして: fprofile-generate
630 名前:デフォルトの名無しさん [2008/09/30(火) 15:12:33 ] よくみたらスペル違うじゃないですか!!!!!!!! ↓のコピペしたから気付きませんでした>< d.hatena.ne.jp/pyopyopyo/20060311/p2
631 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 17:12:30 ] >>622 stripしてdiffしたら
632 名前:ニート009 [2008/09/30(火) 22:34:27 ] stripって何?
633 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:47:34 ] 実行ファイルからデバッグ情報を取り除くこと
634 名前:デフォルトの名無しさん [2008/11/03(月) 13:41:03 ] sh4-linux を組み込む クロス環境を作成中で、 binutils-2.19 ← 成功 gcc-3.4.6(ブートストラップコンパイラ) ← 成功 glibc-2.5 ←ここでこける 完全なsh4-gccの構築 ← ここへはたどり着けない CC=sh4-linux-gcc ac_cv_type_long_double=no ../glibc-2.5/configure \ --host=sh4-linux --prefix=/root/sh4/tools/sh4-linux/ \ --enable-add-ons=linuxthreads --with-headers=/root/sh4/tools/include/ \ --disable-sanity-checks --disable-shared | tee sh4config.log configureは成功するよ makeすると・・・・ /root/sh4/tools/bin/../lib/gcc/sh4-linux/3.4.6/../../../../sh4-linux/bin/ld: cannot find -lgcc_eh 上のエラーが出てmakeが途中でストップ。 gcc-ehとはldによって呼び出されるもの?と思いました。 どのような役割があるのでしょうか? gccコンパイルする時に生成されなかったのかな? 既存のshクロスrpmをインスコすればいいのですが、クロス環境の学習目的です。 参考書籍は「組み込みlinuxシステム構築」を読んでます よろしくおながいいたします。
635 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 16:03:02 ] crosstoolとかcrosstool-NGのスクリプト読んでみるといいよ
636 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 16:41:20 ] >>634 make lib
637 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 17:26:06 ] svn.exactcode.de/t2/trunk/package/base/glibc/gcc_eh.patch.cross
638 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:40:27 ] まだうまくいかないけど、参考になりました。 コンフィグオプションももっと調べないと・・・
639 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:15:10 ] gcc の引数って順番の依存あります? gcc hoge.c mylib.a と gcc mylib.a hoge.c ってかいたとき、Darwin の gcc だとどちらの書き方でも a.out ができるんですが、 Ubuntu の gcc だと、後者の書き方ではリンクエラーになるんです。
640 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:22:44 ] 順序に意味はあります。 リンク時の名前解決において、先に現れたモジュールで未解決の名前を、 後で現れたモジュールで解決するので、これが逆になって、 先に現れたモジュールに定義があって、後から参照する形になると、 名前が解決できなくなります。
641 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:06:49 ] >>639 Darwinのgccはldとは別のリンカ使ってる。(dyld) DarwinはELFやBSD a.out形式じゃないから。(Mach-O)
642 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 12:58:43 ] >>603-604 じゃあコンパイラとしての能力には深刻な問題があるわけではない?
643 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 18:48:12 ] >>642 pchの問題は4.3だと解決してるみたい。
644 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 20:34:44 ] OS CentOS4.6 i386 gcc 3.4.6 やりたいこと binutils-2.10.tar.gz gcc-2.95.2.tar.gz glibc-2.1.3-armlinux.tar.gz を使ってクロス環境を作りたい bintilをビルドする時に ./configreでホストのタイプを設定したいのですが、Centの場合 --host=i386-unknown-linux でいいのでしょうか?
645 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 20:42:29 ] binutilsとgccはとくにhostの指定はしなくてもいいけど
646 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 12:39:07 ] 書くとすれば、i386-pc-linux-gnu だよな。
647 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 17:08:01 ] gcc -dumpmachine
648 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 01:48:00 ] OS:CentOS コンパイルすると 無効なプリプロセスディレクティヴ #! ってでるんだ 誰か解決策を教えてください。
649 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 02:09:29 ] エスパー求む
650 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 02:23:45 ] シェルスクリプトをコンパイルしてはいけません
651 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 02:28:22 ] 実は1行目が#!ccだったりしてw
652 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 15:44:40 ] g++のコンパイルが異常に遅くなってしまってるんですが、 何がボトルネックになっているのかを調べる(コンパイラ自身のプロファイルみたいなの) はありますか? コンパイルしているのは、ユニットテスト的なテストプログラムで、 長さも100行程度です。ひたすら関数の結果をチェックしまくるみたいなもので、 マクロを使いまくっているんですがそれが原因かなぁ・・・
653 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 15:45:39 ] 書き忘れましたが、その100行程度のユニットテストプログラムで、 コンパイルには3分くらいかかってます。 本体プログラムよりはるかに長い・・・orz
654 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 15:51:45 ] 可能なら前半と後半で2つのモジュールに分けて、どっちで遅くなるか調べる。 それを繰り替えして突き止めるとか。最終手段かもだが。
655 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 16:01:17 ] -Eだとどれくらいかかってるんだろ?
656 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 16:08:56 ] 1. -E, -S, -cでそれぞれの時間を確かめる。 2. cc1内部は-fdump-rtl-allで出力ファイルのタイムスタンプを見る
657 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 16:32:33 ] >>654 >>655 >>656 あざっす。いまからいろいろ調べてみます。
658 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:10:27 ] templateでたらいまわし関数みたいなものを作っているとかだったり。
659 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:21:19 ] >>658 テンプレートをガンガン使ってるなら、まぁ遅くなっても納得するんですが・・・ コンパイルしているプログラムが、 ASSERT_TRUE( .xxxx ) ASSERT_TRUE( yyyy ) みたいなものが延々と続いているだけのプログラムなので不可解なのです
660 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 18:25:36 ] time コマンドで実行時間を測定しました。 -c 81.34s user 12.30s system 97% cpu 1:35.78 total -S 82.63s user 11.62s system 99% cpu 1:34.66 total -E 0.36s user 0.17s system 99% cpu 0.533 total それぞれ一回しかやってないのでちょっと揺れがありますが… つまり-Eは一瞬で、asに時間がかかっているという解釈で正しいんでしょうか? ひょっとしてプリプロセッサによってファイルが膨れ上がっているのかとも思いましたが、 他のファイルでも-E 後の行数はほぼ同じだったので、単純に行数が原因ではないようです。 (すべて 50k〜60k行の範囲内) 次に-fdump-rtl-allを付けてコンパイルしようとしましたが… ディスク領域不足でコンパイル中断しましたとか出る上に30分経ってもまだ終わらない…
661 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 18:30:50 ] アサートの数を減らしてみて どこを減らせばどのくらい時間が変わるか見てみたら?
662 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 18:35:33 ] > つまり-Eは一瞬で、asに時間がかかっているという解釈で正しいんでしょうか? どう見てもcc1だろ時間かかってるのは。 -Q ってオプションがあるので試してみ。
663 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:00:41 ] -Sの時間が-cよりかかってるってことは、コードが相当大きくなってる?
664 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:51:11 ] プリプロセスだけして出てきたコードはどれくらいになっとるかね
665 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:20:12 ] どんな最適化しているの? でかいファイルでインタープロシージャルな最適化まで やったら結構重くなるだろ。
666 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:34:10 ] >>663 これは誤差範囲だと思います。一回しか測定してないので >>662 -Q を試してみます。 #if 0 したりしていろいろ測定してみました。どうも、ASSERT_XXXXの個数と だいたい相関があるようなので、1つ1つのコンパイルが遅いような気配です。 マクロの中身を減らせないかどうか検討中です。
667 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:35:40 ] アサートマクロの実装がマズかったりすんじゃないのかね。意外と。
668 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:37:50 ] >>664 プリプロセス後のコードは50k行程度です。 一般的に見て多いのか少ないのかよくわからないですが、 他の、数秒でコンパイルが終わるような同列のソースファイルも 行数はさほど変わらないので、行数そのものは関係ない気がしています >>665 autoconfまかせだったので、-O2の最適化がかかってました。 テストコードだし、-O0にしてみます
669 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 20:40:14 ] >>668 ヘッダファイルの部分を除いた行はどのくらい? あと、マクロは常に1行に展開されるので、 単に行数だけ見るより、バイト数見た方がいいかもしんない。
670 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:24:47 ] >>660 システムタイム大きすぎ!ほとんどI/Oだろ。 -vでcc1の引数見て、テンポリファイルの中見てみ。 超巨大になっているに違いない。 もしかしてtemplate引数に正定数の荒しで特殊化爆発?
671 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 00:29:25 ] -pipe してみて改善するようなら、特殊化の嵐でオブジェクトサイズがとんでもないことになってて I/Oで時間喰ってるんじゃない?コンパイル中にメモリとスワップがどうなってるか見てもいいかも。 今時のマシンでcc1plusに80秒以上とか・・・。gccのinsn-*.cのコンパイルはそのくらいかかってたけど。
672 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 08:34:32 ] gdbでさ、 struct foo; struct foo { ... }; と構造体の前方宣言があると、先に見つけた定義を見てしまって構造体の中身を print でダンプできず <incomplete type> になってしまうのだけど、結局 これって解決不能なの? 毎回同じ構造の別名構造体をダミーで仕込んで、変数ごとにキャストして アクセスとかって超面倒なんだけど。
673 名前:670 mailto:sage [2008/12/22(月) 09:53:03 ] まさに的を射たと思ったんだが反応がない(ワラ
674 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 15:45:05 ] >>673 反応遅れましたが、前にも書いているとおりテンプレート一切使ってないんです。 (boost::scoped_ptrは使ってますが、それはほかの異常ない部分でも一緒なので) 特定のどこかが遅いということではなく、調子のってマクロを使いすぎて ソースの量が爆発しているような気配です。 地道にマクロを削って最適化を抑止して頑張ってます。
675 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 23:50:26 ] >>672 ちょっと簡単な例でやってみたら別に問題ない。 具体的なサンプルコードよろ。
676 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:02:54 ] gdbはinfoのどこかに、関数のプロトタイプ宣言書くなら、 ファイルのはじめの方に書きなと書いてあって笑った記憶があるが…
677 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:10:56 ] >>675 具体的なコードはちょっと出すの難しい。Linuxの動作を gdb -c /proc/kcoreで追いかけてたら途中で<incomplete type>になる構造体が 出てきたという経緯で、自分のコードじゃないから。 - stackoverflow.com/questions/232744/how-to-print-incomplete-type-variable-in-gdb - sourceware.org/ml/gdb/1998/msg00116.html あたりがソースかな。gdb struct incomplete type でググると同様の話がゾロゾロ出てくる。
678 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:16:19 ] >>677 - sourceware.org/ml/gdb/1998/msg00116.html 1998年? お前バカか? そんな古い断片の情報で>>672 みたいな結論出すなよ。 その状況は今のgcc/ldでは起こらない問題。 >>675 というのはカーネルモジュールとか 特殊なリンク環境で起こるんじゃないか? あと、 - stackoverflow.com/questions/232744/how-to-print-incomplete-type-variable-in-gdb は前方参照のことは何も書いてないぞ。 本当に>>677 で見たコードには前方参照があったのか? 単にopaqueな参照だったんでは?
679 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:23:39 ] >>678 古い記事を出してしまったのはすまない。 最近(2006年あたり)でも類似の話があるので出してしまったのだけど、 ちょっと込み入った話なので質問撤回します。お騒がせしてすみません。
680 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:18:11 ] EclipseからMinGWを呼び出してC言語のプログラムを書いているのですが、 "-ansi"オプションを指定しても、なぜかC99の機能が使えて困っています。 具体的には、配列の動的確保がなぜかできます。(↓のような機能) int i = 10; int array[i]; 他のC99の機能(新しいコメント分の書式やfor文での変数初期化)は無効になっていますので これはバグなんでしょうか? ちなみにgccのバージョンは、「gcc (GCC) 3.4.5 (mingw-vista special r3)」です。
681 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:34:24 ] >>680 -std=c89
682 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:04:32 ] >他のC99の機能(新しいコメント分の書式やfor文での変数初期化)は無効になっていますので むしろこっちの方がバグなんじゃ
683 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:07:37 ] >>682 C89+GCC拡張なんじゃね
684 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:11:42 ] -ansi 指定してもその程度なのか。 やはり -pedantic-errors -Wall をつけないとダメなのか。
685 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:19:34 ] >>681 できました!!ありがとうございます!
686 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:27:04 ] バグ呼ばわりか
687 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:33:50 ] 他のコンパイラで使う時に困るので、けったいな独自拡張はやめて下さい。
688 名前:680 mailto:sage [2009/01/18(日) 16:38:49 ] >>681 できたと思ったのですが、またもや可能になってしまいました。 どうやらMinGWではなく、Eclipseのプラグインにバグがある気がします。 お騒がせいたしました。
689 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:40:10 ] だからpandanticだって
690 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:46:42 ] >>688 -std=c89 -pedantic-errors -Wall
691 名前:680 mailto:sage [2009/01/18(日) 16:52:34 ] >>689-690 ありがとうございます、今度こそ表示されたようです。 レスも良く読まずにすみませんでした。
692 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:02:14 ] 全ては自分以外のバグが原因だからなw
693 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:21:14 ] しかもレスもよく読まない。
694 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:07:08 ] 4.3.3
695 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 04:57:11 ] gcc 4.3.3のビルド・インストールをしたのですが、 間違えて、prefix=/usrにしてしまっていたのですが、 一度、アンインストールしたいのですが、 どうすればいいでしょうか?
696 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 05:52:47 ] 以前入れてたバージョンを再ビルドすればいいんじゃねえの?
697 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:56:31 ] >>695 GCCにあったかどうか記憶してないけど make uninstall が効くかもしれない
698 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:29:08 ] >>695 もう一回make installして、何をinstallしたかファイルに保存 ↓ 手作業 cppに依存しているものも結構あるから、 普及する前にrebootしない方がいい。
699 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:48:45 ] その作業を自動化するスクリプトって書けそうだけど
700 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:13:35 ] INSTALL変数を上書きすればいいと思うけど、 まあ結局、目でチェックする必要あるから。
701 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:26:38 ] /usrにある既存環境上書きしてるはずだから、単純にアンインストールすると酷い目に合いそうな気が。 1) インストールされたファイル/ディレクトリの一覧を作る。 2) 標準のパッケージでインストールされるファイル/ディレクトリの一覧を作る。 3) 標準のパッケージを再インストール。 4) (1)に有って(2)に無いファイル/ディレクトリを消す。 これくらいやる必要あるんじゃない?
702 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 23:04:32 ] >>698 にあるcppと C++もインストールした場合のlibstdc++くらいじゃないかな。 システムのクリティカルなところに使われてる可能性あるのは。 ld, libcは入ってないし、crt関係はsoじゃないし。
703 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 07:01:03 ] >>695 ちなみにGCCのmake uninstallは効かない。それとprefix=/usrだったらまずディストリ標準の/usr/bin/gcc同じくg++,c++や cppやgcjなどが完全に上書きされてる。フォートランは違う名前かもしれん。 一番問題は多分/usr/libのlibstdc++が上書きされてる点かな。下手するとgcc4.3入れたその前後にmakeしたアプリなどが 動かなくなるかも。てか運が悪いと既にそこへ入れた時点でlibstdc++の関連で動かなくなるアプリとか出るときあるお。 結果から言うと自分で手作業で探して削除した後、再度デフォルトで入ってたgcc系とlibstdc++のパッケージを再インスコ。 ぶっちゃけ手作業で削除しなくても多分gcc系とlibstdc++の再インスコで上書きされるから平気だと思うよ。 ただしgcc系ってのはgcc,c++,cpp,gcj,fortlanあとなんかあったような気がするけど忘れたw まあその辺全部再インスコね。 そうすれば手作業で消さなくても問題無い位復旧できるはず。 まあ違うバージョンのgccは/optとかにインスコしといた方が無難。/optにおいてもldがちゃんと機能してればlib関連は /opt/gcc***/libを見に行くはずだから。
704 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 07:52:50 ] OS再インストールした方が早かったりしてね。
705 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 14:10:12 ] 基本的に複数バージョン同居できるようになってるからそこまで大変じゃない。 パッケージからgcc関連入れ直して/usr/include/c++/4.3.3、 /usr/lib/gcc/$target/4.3.3、/usr/libexec/gcc/$target/4.3.3を消せば大丈夫。
706 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 05:26:51 ] pc11.2ch.net/test/read.cgi/tech/1232029287/350 325>>理由教えて。
707 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 08:58:49 ] >>706 向こう見に行くの面倒だから、聞きたいポイントを整理して書け。
708 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 12:22:48 ] お疲れ。 double func(double a, double b){double c; return (a+b);} でreturn (a+b); とc=a+b;return c;の違いは何?
709 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 13:12:02 ] >>708 浮動小数点な数値のプロセッサ内での保持方法の差だっけ。 どっかのブログでSunの科学計算の手引きみたいなページが紹介されてた。
710 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 13:30:28 ] 参考にさせてもらいます。 > gcc kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8828.c を、これで修正したら動いた理由が知りたいのですが。 pc11.2ch.net/test/read.cgi/tech/1232029287/350
711 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:17:01 ] どうやら、fld dword ptr 抜けが原因らしいです。 gcc version 3.4.4 (gcc Win/on Win2000) では、戻り値がdoubleの関数は、return 文の所で 演算していはいけない。必ずglobalかlocalの変数に結果を入れてから、 return 変数名; としないと、いけないようだ。
712 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:03:28 ] >gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) 無問題。
713 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:13:02 ] gcc に-O3 のオプション付きでなら良いみたい。
714 名前:712 mailto:sage [2009/02/07(土) 15:14:01 ] つけてもつけなくても8228.cで問題が出ない。
715 名前:713 mailto:sage [2009/02/07(土) 15:29:08 ] そうですか、こちらのPCはLavie C LC60H 確か32bitです。 exeか、逆アセンブル結果でも、掲示板に張って送ります? -O3 無し =7>===== 00401050 push ebp 00401051 mov ebp, esp 00401053 fld qword ptr [ebp+10h] 00401056 fadd qword ptr [ebp+18h] 00401059 fadd qword ptr [ebp+20h] 0040105C pop ebp 0040105D ret
716 名前:712 mailto:sage [2009/02/07(土) 15:53:53 ] それの何が問題だと言いたいのか判らない。 --8228.s:total() _total: pushl %ebp movl %esp, %ebp fldl 16(%ebp) faddl 24(%ebp) faddl 32(%ebp) popl %ebp ret -- 確かに-O3つけたらインライン展開されるから関数自体見えなくはなるけど。
717 名前:713 mailto:sage [2009/02/07(土) 16:01:34 ] fadd した結果が消えて、return値にセットされているか? fadd の次はpopなので、結果の値が消えるのでは。
718 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:03:10 ] はぁ? 何を寝ぼけたことを。
719 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:04:29 ] ・faddした結果はどこに格納されるか ・pop ebpは何をどこに戻すか ・doubleの戻り値はどこに格納されるか 少し勉強してこい。
720 名前:713 mailto:sage [2009/02/07(土) 16:28:54 ] すみません。 それで、問題はfunction側に有るのでは無くて、call側です。 戻ってきた直後で、ストアじゃなくてロードすると、以前の内容が レジスタから消えます。 -O3 無し 00401400 call 00401050h 00401405 fld qword ptr [ebp-10h]
721 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:35:22 ] fldはプッシュなんだよ
722 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:59:47 ] >>720 数多の天才が気付かずに使っているコンパイラのバグを、浅学無能非才のあんたに見つけられるというのか? 思慮が足りないにも程があるぞ。
723 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:07:29 ] すみません、exe おいておきます。どうぞ参考に。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8840.zip cygwin1.dll version 1005.25.0.0 (0.156 2008-06-12 19:34)
724 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:18:27 ] Cのソースは?
725 名前:723 mailto:sage [2009/02/07(土) 17:23:24 ] どぞ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8841.zip
726 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:47:35 ] で、結局何がしたいんだ? デバッグだったら一人で勝手にやってろよ。 勿論、その場合はスレ違いだ。
727 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:51:49 ] gccに-O3オプションは必須か?
728 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:53:05 ] >>727 質問の意図は? >723の言っていることなら只の世迷言だから無視しておけ。
729 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:57:19 ] >>714
730 名前:711 mailto:sage [2009/02/07(土) 19:05:31 ] どぞ
731 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:47:18 ] ソートでスタック喰いつぶしるような?
732 名前:711 mailto:sage [2009/02/07(土) 19:57:07 ] 戻り値を一旦変数に代入すれば大丈夫? 354 :325 :2009/02/07(土) 04:54:11 >>326 double a; do{ while((a=total(st[pl])) > x) pl++; while((a=total(st[pr])) < x) pr--; 355 :325 :2009/02/07(土) 05:01:10 >>326 double a; do{ pc = (pl + pr) / 2; if((a=total(st[pc])) == key) return pc; else if((a=total(st[pc])) > key)
733 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:58:54 ] 浮動小数点演算ではまった話 0xcc.net/blog/archives/000164.html これかな…?
734 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:08:49 ] いいえ。8828.cがまともに動かないのは自前で実装したクイックソートが腐っている所為。
735 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:40:06 ] total関数をコメント側のコードにすると動く。
736 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:19:06 ] 結果がスタック渡しなのに、結果をスタックに書き込んでないからみたい。
737 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:47:30 ] >結果がスタック渡しなのに いいえ、FPUレジスタ渡しです。
738 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:50:46 ] でも、>>720 のコードになってる?
739 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:30:25 ] だから、FPUの勉強してこい。FPUレジスタはFPU内部(と言っても今や単にCPU内部だが)で スタック上に利用するようになっている。だからfldを繰り返したら複数のレジスタに順に格納されるわけ。
740 名前:713 mailto:sage [2009/02/07(土) 22:36:24 ] >>733 参考にしました。結局、gcc 3.4.4はdoubleを使うと「ときどき」桁落ちする。 double total(){return (st.ascore + st.bscore + st.cscore);} =7>===== 00401050 push ebp 00401051 mov ebp, esp 00401053 fld qword ptr [ebp+10h] 00401056 fadd qword ptr [ebp+18h] 00401059 fadd qword ptr [ebp+20h] ;;結果はFPUスタックに置く(80bit値) 0040105C pop ebp 0040105D ret if(st[pc].number == key) 00401153 call 00401050h 00401158 fld qword ptr [ebp+10h] ;;keyメモリ内容をFPUスタックに入れる(sp=sp+1)(64bit値) 0040115B fxch st(1) 0040115D fucompp ;;数値比較(80bit値 : 64bit値) double a; if((a=st[pc].number) == key) 00401153 call 00401050h 00401158 fstp qword ptr [ebp-18h] ;;メモリ内容をFPUスタックから出す(sp=sp-1)(64bit値) 0040115B fld qword ptr [ebp-18h] ;;メモリ内容をFPUスタックに入れる(sp=sp+1)(64bit値) 0040115E fld qword ptr [ebp+10h] ;;keyメモリ内容をFPUスタックに入れる(sp=sp+1)(64bit値) 00401161 fxch st(1) 00401163 fucompp ;;数値比較(64bit値 : 64bit値)
741 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:22:43 ] return (st.ascore + st.bscore + st.cscore); と double a = (st.ascore + st.bscore + st.cscore); return a; では、吐く汗のコードに違いがあるのですが、何が違うのでしょうか?
742 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:30:28 ] return (st.ascore + st.bscore + st.cscore); 結果の戻り値の数値が80bit表現 double a = (st.ascore + st.bscore + st.cscore); return a; 結果の戻り値の数値が64bit表現
743 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:34:10 ] なるほど。なんとなく、わかりました。
744 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:03:32 ] GCC関係なく、x86一般の話のようにしか思えない。
745 名前:706 mailto:sage [2009/02/08(日) 02:51:15 ] >>744 何告白ってるんだ。 ソフト板 pc11.2ch.net/software/
746 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 04:22:49 ] うぜえ
747 名前:デフォルトの名無しさん [2009/02/14(土) 06:48:19 ] gcc -S でコンパイルしたときにコンパイラオプションをアセンブラソースに出力する オプションってありますか?
748 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 07:44:24 ] -fverbose-asm
749 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 08:43:07 ] >>748 ありがとうございます
750 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:15:00 ] gcc *.c -S とするとAT&T Syntaxで*.sができますが、Intel Syntaxで出すことはできますか?
751 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 02:40:48 ] -masm=intel 間違った命令を吐いてしまうという噂を聞いたことがある。 最近の状況はわからん。
752 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 11:18:14 ] >>751 へー。知らんかった
753 名前:750 mailto:sage [2009/03/06(金) 23:58:24 ] >>751 tnx
754 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:03:18 ] 生成コードが心配ならgccには普通にオブジェクト作らせて、objdumpに 欲しい方のシンタックスでダンプさせるのはどう?
755 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:37:29 ] そっちもおかしかったりして。 てことはないと思うが、読みにくくなるからなあ。
756 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 05:26:47 ] そもそも噂ってなんだよ?w 毎週snapshotが出て、全世界で最も多く使われているコンパイラが、 判りやすいbugをいつまでもほっとくわけ無いだろ。 最も多く使われている筈のOSは、10年もディレクトリ掴んだまま 放さないbugが取れなくて、たまにイライラするけどな。
757 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 09:48:26 ] masmバックエンドって使われてないだろうし
758 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 11:41:18 ] 組み込み系で結構使われてますよ。> masm=intel まあnasmでなんとかなる昨今ですが。
759 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 13:12:36 ] >>767 なれりゃAT&Tでも特に困らんしなあ。 あれは完全におまけ機能だよなあ。 >>768 たぶんそのmasmは関係無いと思う。
760 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:14:02 ] >>759 gcc -masm=intel → 組み込み評価ボードのアセンブラ(by Intel)
761 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:13:31 ] >>759 767と768に期待
762 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:59:10 ] 64bit環境で gcc -O2でコンパイルする場合と gcc -m64を付ける場合でゲロったバイナリの内容って異なることは ありえないですよね?
763 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:22:11 ] ありえるのでは? gcc -O2とgcc -m64 -O2が違うのはあり得ないというのならともかく。
764 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 18:24:57 ] 4.5