のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,840人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレGCCについて part8

    gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - pragma + - spec + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    501 : デフォルトの名無 - 2008/07/18(金) 12:17:07 (+124,+29,-28)
    俺もよくわからない。
    .oが出来た日時をCのソースから利用したい。
    a.outが出来た日時をCのソースから利用したい。
    どっちなの? 前者なら>>481でFAでしょ?
    後者なら>>464の方法で出来るよね。
    もっと違うこと?
    502 : 458 - 2008/07/18(金) 13:10:48 (+16,-29,-32)
    >>501
    バージョンを取得する関数のあるソースを hoge.c としたとき
    hoge.o を他の全オブジェクトに依存させればいいのかな?
    やってみるよ。
    503 : 458 - 2008/07/18(金) 13:15:23 (+69,+29,-16)
    できた。ありがとう >>501

    >>499
    コンパイルの必要が無いときはコンパイルしたくないんですよ。
    504 : デフォルトの名無 - 2008/07/18(金) 15:04:35 (+50,-30,-43)
    501だが、>>501>>502眺めて
    30秒考えてようやく仕様が分かったw
    >>501の後者って事だよね。

    >>464の言っている別解だが、

    .PHONY: hoge.o

    これで「hoge.o is up to date」になることなく、
    hoge.oが必要とされれば、タイムスタンプ比較をショートカットして、
    毎回ルールに基づいて生成しようとする。で、

    a.out: $(OBJS) hoge.o

    としておけばいい。
    505 : デフォルトの名無 - 2008/07/18(金) 15:56:12 (+64,+29,-8)
    >>504
    それソースが更新されてないときでも、生成されね?
    506 : デフォルトの名無 - 2008/07/18(金) 16:17:45 (+43,+15,-3)
    a.out が更新されたってことは生成必要なんじゃ?
    507 : デフォルトの名無 - 2008/07/18(金) 16:50:47 (-2,-30,-34)
    a.out: $(OBJS)
    $(COMPILE) $(CFLAGS) hoge.c
    $(LINK) $(OBJS) hoge.o
    508 : デフォルトの名無 - 2008/07/18(金) 17:14:44 (+13,-30,-82)
    BCB使っていて興味本位にGCC触ってみたんですけど
    下のコードって通らない、というか間違った書き方なんでしょうか?
    環境はubuntuのg++4.1.3です

    template< typename T >
    class test
    {
    friend class test< T >; <<ここで怒られてる
    public:
    int aaa;
    };
    509 : デフォルトの名無 - 2008/07/18(金) 17:20:07 (+10,-12,-5)
    エラーメッセージは?
    読んだ?


    510 : 508 - 2008/07/18(金) 17:38:43 (+3,-30,-48)
    ~ error: class 'test<T>' implicitly friends with itself
    と出ていました。

    英語もわからずGUIでしか操作したことないとGCCなんて使うこと出来なさそうだなぁ。
    511 : デフォルトの名無 - 2008/07/18(金) 17:45:22 (+57,+29,-10)
    「自分自身はいちいち宣言しなくてもfriendされてるのと同じことできるよ」と言っています。
    512 : デフォルトの名無 - 2008/07/18(金) 17:51:40 (+91,+29,-21)
    ええええ!
    ・・・実体が違うなら同じクラスでもpraivateに触れないと思ってました。
    ありがとう!
    513 : デフォルトの名無 - 2008/07/18(金) 20:56:11 (-1,-29,-2)
    なんか .PHONY が誤解されてる気がする。
    514 : デフォルトの名無 - 2008/07/19(土) 09:00:41 (+70,+29,-19)
    >>512
    ちっとは英語の勉強しようよ。なんだそのスペリングミスは。
    515 : デフォルトの名無 - 2008/07/19(土) 09:08:09 (+57,+29,-3)
    わざとじゃねーのか。
    さすがにキーワード間違えないだろ
    516 : デフォルトの名無 - 2008/07/19(土) 09:32:08 (-6,-29,-10)
    playmateに触れたい
    517 : デフォルトの名無 - 2008/07/23(水) 00:32:51 (+100,+29,-59)
    あるオブジェクトファイルがリンクされたかどうかって・・・というか、
    あるシンボルの中身が存在するかどうかってソースレベルでチェックできる?

    存在しないシンボルを参照してもリンカがエラーを吐かないことが前提で・・・
    518 : 517 - 2008/07/23(水) 00:47:49 (-2,-30,-23)
    __attribute__((weak_import)) が自分のやりたいことに合致しそうだけど
    サポートしてるのは MacOS X だけっぽい
    諦めてほかの方法を探すかな
    519 : デフォルトの名無 - 2008/07/23(水) 01:29:49 (+64,+29,-25)
    何をしたいのかがわからない。
    実行時にシンボルの中身が存在するか判定したいんだったら遅延リンクでもいいんじゃね?
    520 : デフォルトの名無 - 2008/07/23(水) 01:48:10 (+11,-29,-2)
    >>517
    つ dlopen(3)
    521 : デフォルトの名無 - 2008/07/23(水) 06:42:03 (+22,-30,-80)
    >>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 - 2008/07/23(水) 19:07:38 (+8,-30,-167)
    >>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 : デフォルトの名無 - 2008/07/23(水) 20:59:40 (+64,+4,-3)
    リンクエラーは解決したか?
    524 : 517 - 2008/07/23(水) 23:48:01 (+71,+30,-106)
    >>523
    俺宛てかな?実はそこが問題になるとはあまり考えてなかった。
    中身が無いことを前提にしたシンボル参照をソースで意図出来れば、
    当然リンカもエラーは吐かないだろうと思ってたので。(そしてその通りになった)
    でも気にしてくれてありがとう。

    今後の予定としては、間違えて同名のシンボルを別のソースで定義してしまい
    関数が上書きされたことに気づかずバグに苦しむ。というストーリーを計画しています。
    525 : デフォルトの名無 - 2008/07/24(木) 17:14:00 (+53,+26,+0)
    GCCのコンパイルがおわらねぇ
    526 : デフォルトの名無 - 2008/07/24(木) 17:17:21 (+52,+29,-3)
    まあ環境によっては2日仕事だな
    527 : デフォルトの名無 - 2008/07/24(木) 18:37:23 (+52,+24,-4)
    マジか…
    400MHzのアナルスペックで3時間くらい放置してる絶望
    528 : デフォルトの名無 - 2008/07/24(木) 19:31:19 (+52,+29,-9)
    余計なの削除してやり直すか…
    529 : デフォルトの名無 - 2008/07/24(木) 20:51:42 (+5,-29,-17)
    >>525
    もし余ってるマシンがあるなら、distccで分散コンパイルとかどうよ。
    C++だとエラー出まくりで、コンパイルできなかったりするけど。(これは俺の設定が悪いのかな?)
    530 : デフォルトの名無 - 2008/07/24(木) 22:41:16 (+9,-29,-29)
    make LANGUAGES=cで放置

    メインのPCは修理に出してしまったから、400MHzの一台しかないんだよ…
    やっと3時間くらいでstage1が終わったから、朝までつけっぱなしで終わりそうかな
    マルチコアCPUなら-j 2とか付けたいんだけど…
    531 : デフォルトの名無 - 2008/07/25(金) 09:25:12 (+5,-24,-9)
    >>530
    ひとつでも-j 2はこうかてきめんだよ。
    HDDに書いてる間CPUひまだし
    532 : デフォルトの名無 - 2008/07/25(金) 17:15:29 (-1,-29,-15)
    今まで-jなんて知らなかったorz
    クアッドコア使えるのに。
    533 : デフォルトの名無 - 2008/07/25(金) 18:26:22 (-4,-27,-2)
    な、なんだってー(AA略
    534 : デフォルトの名無 - 2008/07/25(金) 19:21:39 (-11,-29,+0)
    ーj10
    535 : デフォルトの名無 - 2008/07/25(金) 19:33:24 (+57,+29,-18)
    軽く15年前からあるオプションだよなw
    536 : デフォルトの名無 - 2008/07/25(金) 20:02:57 (+44,+16,+1)
    エラーでるわ
    素直にバイナリ落としてきた
    537 : デフォルトの名無 - 2008/07/25(金) 20:03:33 (-1,-29,-18)
    OpenOffice.orgは非常に大きなプログラムなので、
    RPMファイルの作成には長い時間が必要となる。
    1GHzのCeleronで実行したところ、14時間以上かかった。
    http://www.atmarkit.co.jp/flinux/rensai/linuxtips/642opt686.html
    538 : デフォルトの名無 - 2008/07/26(土) 21:28:10 (+27,-30,-37)
    C言語で書かれているプログラムをAlphaの命令セットで実行できるように
    クロスコンパイルするにはどうすればいいのでしょうか
    まず何が必要なのでしょうか?
    とりあえずGCC,binutil,glibcを用意してみたのですが…
    539 : デフォルトの名無 - 2008/07/26(土) 22:05:49 (+71,+16,-2)
    540 : デフォルトの名無 - 2008/07/27(日) 05:47:44 (-2,-30,-41)
    gccやbinutilもってきたなら中のドキュメント読めば、つーか
    configure --helpすれ。
    541 : デフォルトの名無 - 2008/07/27(日) 09:35:55 (+95,+24,+0)
    >>539
    すげーどめいんw
    542 : デフォルトの名無 - 2008/07/27(日) 10:15:19 (+57,+29,-16)
    んー。「エンディアンネス」のくだけた表現で、向こうではわりかし普通よ?
    http://www.catb.org/jargon/html/B/byte-sex.html
    543 : デフォルトの名無 - 2008/07/27(日) 15:02:15 (-1,-29,-2)
    >>541
    もしかして:
    www.bitesex.com
    544 : デフォルトの名無 - 2008/07/27(日) 19:37:15 (+16,-30,-36)
    >>541
    vmware に NetBSD 入れて /usr/src/build.sh -m alpha tools
    545 : 544 - 2008/07/27(日) 19:38:37 (+70,+29,-3)
    >>541
    って、すげードメイン、か。すげーめんどいん、に見えた。
    逝ってくる。
    546 : デフォルトの名無 - 2008/07/27(日) 19:48:13 (+47,+29,+0)
    すげーメイド!
    547 : デフォルトの名無 - 2008/07/29(火) 00:34:26 (+9,-30,-162)
    いろいろアドバイスありがとうございます
    とりあえずGCC,binutil,glibcだけでなんとかなるor541の方法ってことでOK?

    binutils入れてみようとおもったのですがconfigureで HOST=~には使っているマシンの
    状況を書けばいいのかな? それともプログラムのバイナリを実行させる先の
    事をかけばいいのか…

    HOST=CPU-COMPNY-SYSTEM ってことらしのですが
    CentOSでPentium4のマシン使っている場合だとx86-centos-linuxで
    いいんですかね?
    548 : デフォルトの名無 - 2008/07/29(火) 00:46:44 (+14,-29,-41)
    >>547
    カナディアンクロスやるんじゃなければ
    ホストは configure が勝手に発見してくれるので
    /path/to/configure --target=
    で桶

    いろいろほげってダメだったらまた濃い
    549 : 548 - 2008/07/29(火) 00:50:02 (+3,-29,-42)
    ちなみにこのへんの GNU toolchain は
    カナディアンクロスもある程度考慮されてるので

    "Linux ホストで、MipsターゲットのCygwinバイナリを作る"
    てな感じも(必要な知識があれば)可能。
    ↑経験談
    550 : デフォルトの名無 - 2008/07/30(水) 21:50:20 (+65,+15,+0)
    GCCは変態だなぁ(褒
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - pragma + - spec + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について