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

    元スレGCCについて part9

    gcc覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - std:map + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    856 = :

    >>855
    strace で見てみたら、
    自前の collect2 は ld ではなく ld-new という名前を検索してた。

      ln -s ld ld-new

    でうまくいくようになった。(何故 ld-new なのかはわからないけど)

    みんなありがとう。

    857 = :

    それって肝心のltoは効いてないんじゃないの?

    859 = :

    ld は自前の ld だよ。だから古くない。

    gcc a.c -> 自前の ld を呼ぶ
    gcc a.c -flto -> 自前の ld-new を呼ぶ (ld-new は存在しない)

    という状況だった。だから自前の ld のそばに ld-new を作ってみたらうまくいった。
    lto のプラグイン自体は存在するし呼び出されている。

    861 = :

    [name@localhost ~]$ gcc -v
    組み込み spec を使用しています。
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/home/name/usr/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/lto-wrapper
    ターゲット: x86_64-unknown-linux-gnu
    configure 設定: /home/name/usr/src/gcc/gcc-4.6.0/configure --prefix=/home/name/usr/gcc --enable-languages=c,c++,fortran --disable-multilib --enable-lto
    スレッドモデル: posix
    gcc バージョン 4.6.0 (GCC)

    configure する前に gmp/ mpc/ mpfr/ と
    binutils-2.21/ から bfd/ binutils/ etc/ gas/ gold/ gprof/ ld/ opcodes/ を
    gcc-4.6.0/ の下にリンクしてある。

    862 = :

    binutilsのinstallの仕方がおかしいような?

    863 = :

    ld-newってのはbootstrapで使うから、
    buildに失敗してるんだろうね。

    865 = :

    >>862
    おかしい? http://gcc.gnu.org/install/download.html に従ってやってるつもりなんだけど

    >>863,864
    ルートディレクトリの下を全検索したら、
    (↓/home/name/usr/src/gcc/build はビルド用のディレクトリ)
    /home/name/usr/src/gcc/build/ld/ld-new
    /home/name/usr/src/gcc/build/stage1-ld/ld-new
    /home/name/usr/src/gcc/build/prev-ld/ld-new
    が確かに見つかった。

    866 = :

    え、binutilsをビルドしたところで
    make install
    やってないの?

    867 = :

    >>866
    そりゃあ、binutils のディレクトリで make してるわけじゃないし。

    ただソースにリンク張って、gcc のトップディレクトリで make && make install しただけ。
    不味いの?

    868 = :

    すまん。
    ×gcc のトップディレクトリで
    ×gcc のトップディレクトリを別のディレクトリで configure して

    あとビルドの残骸で残ってた ld-new と、インストールされた ld のハッシュ値は同じだった。

    869 = :

    binutilsとgccを一緒にビルドするとかやったことない、自分は
    binutilsとgccを別々にビルドして
    --prefixを合わせて
    make install
    を個別にやれば、はまらないような?

    870 = :

    そりゃそうよ。
    bootstrapの時に新しい奴を確実に使うためのファイル名。
    bootstrap終わったら消される。

    >>867
    指示通りに出来てなかったんだろうね。

    871 = :

    別々にするのが無難かなあ。やっぱり。

    特に問題なく動いてるし、もういじるの面倒だ。
    次のリリースが出たら、今度は別々にビルドしてみるよ。

    872 = :

    むしろ一緒にビルドする人初めて見たレベル

    873 = :

    それ、書きたかった

    874 = :

    binutilsのバージョン上げる必要ないでしょ?

    875 = :

    まあ実際にバグかもしれないな
    んなけったいな入れ方しつつ、LTO使う人がいないせいで表面化しなかっただけかもしれない

    876 = :

    >>874
    c++0x の name mangling を解読できる c++filt が欲しかったんだよ。
    後はおまけ。

    で、name mangling なんてコンパイラ固有なんだから
    c++filt が gcc と関係ない binutils に入ってて大丈夫なのか?と想像をしていたら、
    >>865 に「一緒にビルドできるよ」と書いてあった。

    だからその通りやったわけよ。

    877 = :

    キーボードの矢印キーが押されたかどうかを判定する関数はありますでしょうか?
    linuxで、c言語です

    880 = :

    stdinのバッファリング切って、読んだキャラクター列が↓かどうか調べる。
    ちなみに↑↓→←と押した。

    $ hexdump -C
    ^[[A^[[B^[[C^[[D
    00000000 1b 5b 41 1b 5b 42 1b 5b 43 1b 5b 44 0a |.[A.[B.[C.[D.|
    0000000d

    885 = :

    システムに入ってるgccが古すぎるがアップデートしてもらえないので、
    自分で--prefixを指定してコンパイルし、ホーム以下に gcc を入れました。
    それでコンパイルは出来たのですが、実行時に共有ライブラリがうまくリンクされません。
    LD_LIBRARY_PATHを設定するラッパーを用意する以外で良い方法はありませんか?

    root権限なしで出来る方法でお願いします。
    あと -static はスレッド(ちなみにLinux)まわりが不整合になるので不可です。

    886 = :

    ライブラリの置き場所はホームに固定でいいってこと?
    それならリンカに-Lオプションでいいんじゃない?

    888 = :

    一晩寝てからドキュメントをあさり
    リンク時に LD_RUN_PATH を設定するか -Wl,-rpath=/hoge を指定することで
    バイナリのDT_RUNPATHタグに記録され実行時に利用される、
    というので、とりあえず共有ライブラリがリンクされるようになりました。
    この方法であってるでしょうか?

    >>886
    Linuxではリンカの-Lオプションはバイナリに渡されないようです。
    でもドキュメント探すときのヒントになりました。
    ありがとうございます。

    889 = :

    template<int> struct Example;
    template<> struct Example<2>
    {
    template<class> static void StaticMethod(int) { }
    };
    template<> struct Example<3>
    {
    template<int> void Method(int)
    {
    Extern<2>::StaticMethod<int>(10);
    }
    };

     どのバージョンか解からんが、去年ぐらいのバージョンで
    こんな感じのコードをコンパイルしようとしたら、StaticMethod<int>が
    比較演算子とシンボルに分解されてコンパイルエラーになってた。
     いつ頃のバージョンで治ったのか知ってる人いる?

    890 = :

    2011年になっても未だにJAVA使い続けてる奴ってさ
    仕事で仕方なくならわかるけど

    家でもJAVAやってるなら本当にバカだよね。哀れ


    お前たちは本当にゴミだな

    891 = :

    >>885 あと -static はスレッド(ちなみにLinux)まわりが不整合になるので不可です。

    それってどんな現象がおきるのですか?

    892 = :

    gdb を使って任意の行にブレイクポイント設定しつつ
    プロンプト表示させずに
    即プログラムをデバッグ実行させるにはどうしたらいいでしょうか

    イメージとしては、GUIのデバッガと同じようなことがしたいのですが
    (ブレイク後値参照とかいった複雑?なことはしません)

    893 = :

    GUIのデバッガ使えよ。
    http://www.gnu.org/software/gdb/links/
    > Sites and links related to GDB
    > Graphical Interfaces and Integrated Development Environments using GDB
    > (略)

    894 = :

    そうではなくて、
    ちょっとした便利ツールを作りたいのです

    895 = :

    >>892
    できるのか知らんけど、パイプからコマンド流し込めないの?

    896 = :

    >>894
    じゃあこっち。
    http://www.kegel.com/linux/gdbserver.html

    Lispを理解できるなら、シンプルにgdb.elでもいいかも。

    900 = :

    いつと比べてだよ
    試せよ
    ダダなんだから


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - std:map + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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