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

    私的良スレ書庫

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

    元スレGCCについて part9

    gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - std:map + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    851 : デフォルトの名無 - 2011/05/19(木) 23:56:26.88 (-1,-29,-3)
    --prefixと違うところに放り込むと失敗するだったかな
    852 : デフォルトの名無 - 2011/05/20(金) 14:50:13.48 (+0,+0,+0)
    >>834
    調べてみた。自前の collect2 に -plugin オプションを指定すると
    ld を見つけられなくなるらしい…どうしてだろう

    ○自前の collect2
    [name@localhost toys]$ /home/name/usr/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/collect2 \
    -plugin \
    /home/name/usr/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/liblto_plugin.so
    collect2: 'ld' が見つかりません

    ○システムの collect2
    [name@localhost toys]$ /usr/libexec/gcc/x86_64-redhat-linux/4.1.2/collect2 \
    -plugin \
    /home/name/usr/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/liblto_plugin.so
    /home/name/usr/gcc/bin/ld: no input files
    collect2: ld はステータス 1 で終了しました
    853 : デフォルトの名無 - 2011/05/20(金) 16:36:56.30 (-2,-30,-38)
    PEX_SEARCH辺りの設定がシステムのと違ってるんじゃないか。
    /home/name/usr/gcc/binをPATHにくわえても駄目なの?
    854 : デフォルトの名無 - 2011/05/20(金) 19:23:33.32 (-1,-29,-5)
    gcc -print-prog-name=ld
    855 : デフォルトの名無 - 2011/05/20(金) 19:38:05.24 (-4,-29,+0)
    strace
    856 : デフォルトの名無 - 2011/05/20(金) 21:55:02.78 (+12,-30,-28)
    >>855
    strace で見てみたら、
    自前の collect2 は ld ではなく ld-new という名前を検索してた。

      ln -s ld ld-new

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

    みんなありがとう。
    857 : デフォルトの名無 - 2011/05/21(土) 03:01:33.48 (+33,+5,-7)
    それって肝心のltoは効いてないんじゃないの?
    858 : デフォルトの名無 - 2011/05/21(土) 03:12:18.91 (-6,-29,-3)
    ldは少々古くてもltoは効く。
    859 : 856 - 2011/05/22(日) 17:31:59.67 (+3,-30,-36)
    ld は自前の ld だよ。だから古くない。

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

    という状況だった。だから自前の ld のそばに ld-new を作ってみたらうまくいった。
    lto のプラグイン自体は存在するし呼び出されている。
    860 : デフォルトの名無 - 2011/05/22(日) 17:33:19.84 (-6,-29,+0)
    gcc -v
    晒してよ
    861 : デフォルトの名無 - 2011/05/22(日) 18:41:11.39 (+3,-30,-258)
    [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 : デフォルトの名無 - 2011/05/22(日) 18:45:45.27 (+4,-30,-16)
    binutilsのinstallの仕方がおかしいような?
    863 : デフォルトの名無 - 2011/05/22(日) 18:58:57.63 (+4,-29,-37)
    ld-newってのはbootstrapで使うから、
    buildに失敗してるんだろうね。
    864 : デフォルトの名無 - 2011/05/22(日) 19:00:17.94 (-1,-29,-12)
    gccのconfigureの時にld-newが検索に引っかかったような?
    865 : デフォルトの名無 - 2011/05/22(日) 19:12:01.57 (+10,-30,-135)
    >>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 : デフォルトの名無 - 2011/05/22(日) 19:28:00.54 (+4,-30,-25)
    え、binutilsをビルドしたところで
    make install
    やってないの?
    867 : デフォルトの名無 - 2011/05/22(日) 19:36:36.27 (+20,-30,-31)
    >>866
    そりゃあ、binutils のディレクトリで make してるわけじゃないし。

    ただソースにリンク張って、gcc のトップディレクトリで make && make install しただけ。
    不味いの?
    868 : デフォルトの名無 - 2011/05/22(日) 19:43:55.17 (+3,-29,-39)
    すまん。
    ×gcc のトップディレクトリで
    ×gcc のトップディレクトリを別のディレクトリで configure して

    あとビルドの残骸で残ってた ld-new と、インストールされた ld のハッシュ値は同じだった。
    869 : デフォルトの名無 - 2011/05/22(日) 19:44:14.00 (+3,-30,-48)
    binutilsとgccを一緒にビルドするとかやったことない、自分は
    binutilsとgccを別々にビルドして
    --prefixを合わせて
    make install
    を個別にやれば、はまらないような?
    870 : デフォルトの名無 - 2011/05/22(日) 19:46:07.24 (+26,-4,-32)
    そりゃそうよ。
    bootstrapの時に新しい奴を確実に使うためのファイル名。
    bootstrap終わったら消される。

    >>867
    指示通りに出来てなかったんだろうね。
    871 : デフォルトの名無 - 2011/05/22(日) 20:19:46.19 (+57,+29,-29)
    別々にするのが無難かなあ。やっぱり。

    特に問題なく動いてるし、もういじるの面倒だ。
    次のリリースが出たら、今度は別々にビルドしてみるよ。
    872 : デフォルトの名無 - 2011/05/22(日) 20:25:43.21 (+57,+29,+0)
    むしろ一緒にビルドする人初めて見たレベル
    873 : デフォルトの名無 - 2011/05/22(日) 20:27:40.40 (+52,+29,+0)
    それ、書きたかった
    874 : デフォルトの名無 - 2011/05/22(日) 20:40:28.23 (+4,-29,-14)
    binutilsのバージョン上げる必要ないでしょ?
    875 : デフォルトの名無 - 2011/05/22(日) 20:47:05.32 (+57,+29,-22)
    まあ実際にバグかもしれないな
    んなけったいな入れ方しつつ、LTO使う人がいないせいで表面化しなかっただけかもしれない
    876 : デフォルトの名無 - 2011/05/22(日) 20:57:37.12 (+4,-30,-50)
    >>874
    c++0x の name mangling を解読できる c++filt が欲しかったんだよ。
    後はおまけ。

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

    だからその通りやったわけよ。
    877 : デフォルトの名無 - 2011/06/17(金) 21:06:25.37 (+24,-3,-30)
    キーボードの矢印キーが押されたかどうかを判定する関数はありますでしょうか?
    linuxで、c言語です
    878 : デフォルトの名無 - 2011/06/17(金) 21:08:18.71 (-5,-29,-15)
    GUI or CUI?
    879 : デフォルトの名無 - 2011/06/17(金) 21:11:38.87 (-7,-29,+0)
    >>878CUIです
    880 : デフォルトの名無 - 2011/06/17(金) 21:14:09.73 (+3,-30,-26)
    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
    881 : デフォルトの名無 - 2011/06/17(金) 21:18:19.28 (-6,-29,-3)
    ncurses使うんじゃないの?
    882 : デフォルトの名無 - 2011/06/18(土) 10:20:34.68 (-5,-28,+1)
    ncursesを作る話だな
    883 : デフォルトの名無 - 2011/06/21(火) 18:27:16.11 (-1,-29,-20)
    gcc4.6.1RCリリース
    順調にいけば来週早々にも正式版がでる予定
    884 : デフォルトの名無 - 2011/06/28(火) 02:23:00.99 (-6,-29,+0)
    GCC 4.6.1
    885 : デフォルトの名無 - 2011/06/29(水) 01:49:38.82 (+21,-30,-78)
    システムに入ってるgccが古すぎるがアップデートしてもらえないので、
    自分で--prefixを指定してコンパイルし、ホーム以下に gcc を入れました。
    それでコンパイルは出来たのですが、実行時に共有ライブラリがうまくリンクされません。
    LD_LIBRARY_PATHを設定するラッパーを用意する以外で良い方法はありませんか?

    root権限なしで出来る方法でお願いします。
    あと -static はスレッド(ちなみにLinux)まわりが不整合になるので不可です。
    886 : デフォルトの名無 - 2011/06/29(水) 01:57:29.44 (+14,-19,-17)
    ライブラリの置き場所はホームに固定でいいってこと?
    それならリンカに-Lオプションでいいんじゃない?
    887 : デフォルトの名無 - 2011/06/29(水) 02:04:50.94 (-6,-29,-15)
    symlink?
    888 : 885 - 2011/06/29(水) 07:54:30.81 (+4,-30,-137)
    一晩寝てからドキュメントをあさり
    リンク時に LD_RUN_PATH を設定するか -Wl,-rpath=/hoge を指定することで
    バイナリのDT_RUNPATHタグに記録され実行時に利用される、
    というので、とりあえず共有ライブラリがリンクされるようになりました。
    この方法であってるでしょうか?

    >>886
    Linuxではリンカの-Lオプションはバイナリに渡されないようです。
    でもドキュメント探すときのヒントになりました。
    ありがとうございます。
    889 : デフォルトの名無 - 2011/06/29(水) 23:16:44.64 (+3,-30,-200)
    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 : 天使 ◆uL5e - 2011/07/04(月) 16:08:18.09 (+55,+29,-58)
    2011年になっても未だにJAVA使い続けてる奴ってさ
    仕事で仕方なくならわかるけど

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


    お前たちは本当にゴミだな
    891 : デフォルトの名無 - 2011/07/04(月) 19:30:58.06 (+9,-20,-24)
    >>885 あと -static はスレッド(ちなみにLinux)まわりが不整合になるので不可です。

    それってどんな現象がおきるのですか?
    892 : デフォルトの名無 - 2011/07/08(金) 01:29:58.77 (+95,+28,-48)
    gdb を使って任意の行にブレイクポイント設定しつつ
    プロンプト表示させずに
    即プログラムをデバッグ実行させるにはどうしたらいいでしょうか

    イメージとしては、GUIのデバッガと同じようなことがしたいのですが
    (ブレイク後値参照とかいった複雑?なことはしません)
    893 : デフォルトの名無 - 2011/07/08(金) 01:35:51.49 (+3,-30,-60)
    GUIのデバッガ使えよ。
    http://www.gnu.org/software/gdb/links/
    > Sites and links related to GDB
    > Graphical Interfaces and Integrated Development Environments using GDB
    > (略)
    894 : デフォルトの名無 - 2011/07/08(金) 01:41:59.37 (+64,+29,-4)
    そうではなくて、
    ちょっとした便利ツールを作りたいのです
    895 : デフォルトの名無 - 2011/07/08(金) 01:47:17.54 (+70,+29,-42)
    >>892
    できるのか知らんけど、パイプからコマンド流し込めないの?
    896 : デフォルトの名無 - 2011/07/08(金) 02:10:56.45 (+11,-24,-3)
    >>894
    じゃあこっち。
    http://www.kegel.com/linux/gdbserver.html

    Lispを理解できるなら、シンプルにgdb.elでもいいかも。
    897 : デフォルトの名無 - 2011/07/08(金) 02:30:30.75 (-1,-29,-23)
    ソケットかlispですか
    lisp love な教授がいたけど、
    まったく共感出来なかったですね…

    gdb server で進めていこうと思います
    ありがとうございました
    898 : デフォルトの名無 - 2011/07/08(金) 11:02:55.49 (-1,-29,-17)
    lispはコードを参考にすればいいだけ。
    ちょっと読めば、すぐにpty使ってるのが分る。
    899 : デフォルトの名無 - 2011/07/27(水) 23:59:31.72 (-1,-29,-40)
    gcc 4.6 の、intel CPU への最適化って、どのくらいパフォーマンス上がりました?
    900 : デフォルトの名無 - 2011/07/28(木) 05:10:41.24 (+91,+29,-1)
    いつと比べてだよ
    試せよ
    ダダなんだから
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - std:map + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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