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

    私的良スレ書庫

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

    元スレGCCについて part10

    gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    51 : デフォルトの名無 - 2011/11/23(水) 06:13:33.85 .net (+3,-30,-47)
    すいません
    リンカ(ld)のオプション-Rについて教えてください
    マニュアルには「シンボル名とそのアドレスを filename から読み込む.」
    とありますが、
    これはライブラリのあるフォルダを指定しているということでしょうか?
    とすると、gccの-Lや-lはなんのために有るのでしょうか?
    52 : デフォルトの名無 - 2011/11/23(水) 07:00:06.55 .net (+0,-30,-153)
    -l LIBNAME, --library LIBNAME
    Search for library LIBNAME
    -L DIRECTORY, --library-path DIRECTORY
    Add DIRECTORY to library search path
    -R FILE, --just-symbols FILE
    Just link symbols (if directory, same as --rpath)
    -rpath PATH Set runtime shared library search path
    53 : デフォルトの名無 - 2011/11/23(水) 21:57:03.33 .net (+0,+0,+0)
    >>52
    ん?
    よくわからないです。
    例えば
    cc -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/.libs
      -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libfetch
    -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libnbcompat
    -Wl,-R/usr/pkg/lib -L../lib -o pkg_add main.o perform.o
    -linstall -lfetch -larchive -lbz2 -lz -lnbcompat -lnbcompat
    を実行すると、
    ../lib/libinstall.a(parse-config.o): In function `pkg_install_config':
    parse-config.o(.text+0x3f6): undefined reference to `fetchConnectionCacheInit'
    と言うエラーが出ます。
    原因は、
    -R/usr/pkg/libのところで、/usr/pkg/libというディレクトリが存在していないためだと思われるのですが、
    -Wl,-R/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/.libs
    -Wl,-R/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libfetch
    -Wl,-R//usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libnbcompat
    -Wl,-R../lib
    と追記した所、
    cc:-R/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/.libs
    linker input files unused sinece linking not done
    と出て、失敗してしまいました。
    解決策は、/usr/pkg/libを作ってそこにlib**をコピーすれば良いかなとも思ったのですが、
    これで良いでしょうか?
    54 : デフォルトの名無 - 2011/11/23(水) 22:24:14.63 .net (+0,-30,-132)
    >>53
    >よくわからないです。
    ド素人が何をしてるのか、わかる人がいるとは思えんけど

    --rpathってのは、暗黙にリンクされるlibファイルの場所を指定するんだけど
    (俺もよくわかってないので雰囲気でわかって頂戴)

    -Lはlibのある場所を指定するところ

    libhoge.aをlinkしたいとき、フルパスで指定すると
    ほげほげ/libhoga.a
    と書くところを
    -Lほげほげ -lhoge
    って、書けるっていうだけ

    libの依存関係によっては、書く順番によってはエラーになることがある

    実績のあるtar玉から
    configure,makeして何やってるか、見て見るところから始めたら

    言葉で覚えるより出来合いのもの見て覚えるほうを個人的にオススメする
    55 : デフォルトの名無 - 2011/11/28(月) 02:49:40.60 .net (+0,+0,+0)
    すいません。教えてください。
    BSD/OSにてpkgsrcをコンパイルしています。
    gccのバージョンは
    Using builtin specs.
    gcc version 2.95.3 20010315 (release)
    です。
    何度か/usr/pkgsrc/bootstrap/bootstrapを行っていて、
    失敗するごとに、ソースの修正→/usr/pkgsrc/bootstrap/cleanup→/var/dbの削除を行って
    再度/usr/pkgsrc/bootstrap/bootstrapを行うという繰り返しで進んでいます。
    /usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/pkg_install-20110805/addというディレクトリで
    cc -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/.libs
    -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libfetch -L/usr/pkgs
    rc/bootstrap/work/wrk/pkgtools/pkg_install/work/libnbcompat -Wl,-R/usr/pkg/lib
    -L../lib -o pkg_add main.o perform.o -linstall -lfetch -larchive -lbz2 -lz -lnb
    compat -lnbcompat
    ../lib/libinstall.a(parse-config.o): In function `pkg_install_config':
    parse-config.o(.text+0x3f6): undefined reference to `fetchConnectionCacheInit'
    ../lib/libinstall.a(pkg_io.o): In function `fetch_archive_open':
    pkg_io.o(.text+0x19): undefined reference to `fetchXGet'
    というエラーが発生しました。
    56 : デフォルトの名無 - 2011/11/28(月) 03:53:25.95 .net (+57,+29,-4)
    エラーメッセージの内容が理解できないの
    としか、いえんな
    57 : デフォルトの名無 - 2011/11/28(月) 08:57:15.07 .net (+57,+29,+0)
    何カ所でマルチポストしてるんだよこいつ
    58 : デフォルトの名無 - 2011/11/28(月) 15:50:55.67 .net (-1,-29,-5)
    BSDIってまだサポートされてるのとかgcc-2.95とかそれでもマルチとか驚愕
    59 : デフォルトの名無 - 2011/11/28(月) 17:56:22.57 .net (-2,-30,-38)
    autotoolsで作ってる共有ライブラリを
    fprofile-generate、fprofile-useを使って
    最適化する方法の詳細な記事を書いてください。
    60 : デフォルトの名無 - 2011/11/28(月) 17:59:00.69 .net (+12,-5,-1)
    ?ttp://d.hatena.ne.jp/pyopyopyo/20060311
    61 : デフォルトの名無 - 2011/12/02(金) 12:35:51.36 .net (+3,-30,-106)
    私は高校2年の女子です。
    C言語の勉強をしています。
    次のようなプログラムを書きました。

    #include <stdio.h>
    #include <curses.h>
    int main()
    {
    int x;
    getch("%u", x);
    printf("%\n", x);
    return 0;
    }

    コンパイルエラーが
    error: macro "getch" passed 2 arguments, but takes just 0
    と、出ました。
    /usr/include以下にcurses.hがあることは確認済みです。
    原因と対策を教えてください。
    62 : デフォルトの名無 - 2011/12/02(金) 13:43:09.47 .net (-2,-30,-33)
    error: macro "getch" passed 2 arguments, but takes just 0
    63 : デフォルトの名無 - 2011/12/02(金) 13:44:58.01 .net (+24,-3,-12)
    エラーメッセージを読め。読み方がわからなければ先生に聞け。
    getch()に引数は不要。他の関数と間違えてる?
    64 : デフォルトの名無 - 2011/12/03(土) 01:51:07.80 .net (+3,-29,-46)
    エラーメッセージ、本当は error: の前に "なんとか.c:6:14 " みたいなのがあるはずだが。
    それに本当にcursesでプログラムを書きたいのかと。

    もしこれが真面目な質問なら、C言語の質問をするようなスレで、どんなプログラムを
    作りたいのか説明して質問した方がいいと思う。
    本当にcursesを使うならUNIX系の人じゃないと知らないかもしれんけど。
    65 : デフォルトの名無 - 2011/12/04(日) 06:50:41.64 .net (+3,-30,-40)
    初心者ですみません

    Cygwin で gcc を使ってます
    assert() を使用すると undefined reference to `_assert'
    エラーが出て困ってます

    どなたかご教授頂けると幸いです
    66 : デフォルトの名無 - 2011/12/04(日) 07:23:22.03 .net (-6,-29,-2)
    #include <assert.h>してある?
    67 : デフォルトの名無 - 2011/12/04(日) 10:45:39.26 .net (-5,-27,+3)
    >>66
    ビンゴでした(;^ω^)
    68 : デフォルトの名無 - 2011/12/08(木) 23:11:00.34 .net (-2,-30,-51)
    gccというかautotoolsなのですが
    ./configure --build=x86_64-w64-mingw32
    と毎回指定するのが面倒なので、環境変数で指定できないでしょうか?
    69 : デフォルトの名無 - 2011/12/09(金) 02:11:26.49 .net (-2,-30,-61)
    alias conf='./configure --build=x86_64-w64-mingw32'
    とでもしとけばいいんじゃね?
    70 : デフォルトの名無 - 2011/12/09(金) 02:22:58.33 .net (+0,-29,-20)
    config.niceを拾っておいて2回目以降はそれ使わね?
    71 : デフォルトの名無 - 2011/12/09(金) 02:42:43.54 .net (-2,-29,-23)
    >>70
    config.niceって初めて知った。
    ググるとPHPやApacheで使われているもののように見えるけど、よくわからん。
    72 : デフォルトの名無 - 2011/12/09(金) 17:49:05.22 .net (-1,-29,-25)
    >>70
    head config.log
    してたわ~と思ったけどそんなファイルできないぞ
    どうもautoconfの機能ではなく、configure.acに自分で処理書いて生成してるっぽいが
    73 : デフォルトの名無 - 2011/12/10(土) 23:10:38.16 .net (+4,-30,-51)
    SandyBridgeでg++ -march=native -mtune=native で作ったバイナリって
    Core2とかじゃ動かないみたいなんだけど、どのオプションでどれで動くかって
    表か何かない?
    74 : デフォルトの名無 - 2011/12/11(日) 03:28:34.47 .net (+0,-29,-37)
    >>73
    nativeだとAVX(-mavx)が入るからだろ
    -march=core2にしたらいいよ
    オプションはこれででる
    http://d.hatena.ne.jp/ktomoya/20100510/1273510042
    75 : デフォルトの名無 - 2011/12/11(日) 08:32:33.51 .net (+8,-30,-272)
    >>74
    おぉ、サンクス。
    ちなみに、MinGW/g++.exe (GCC) 4.6.1でこんなんでた。
    -march=corei7-avx -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-tbm -mavx -msse4.2 -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=corei7-avx
    76 : デフォルトの名無 - 2011/12/11(日) 15:53:29.35 .net (+3,-30,-217)
    >>75
    -mavx -msse4.2 -msse4.1 -maes -mpclmul -mpopcnt ...
    などがCPUごとに実装状況が異なる命令を使うってオプションだから
    SSE4.2やAVX、POPCNTなど最近できた命令に対応していないプロセッサだと動かない
    -march=nativeはコンパイルしたマシンのプロセッサなどからこういうオプションを勝手に付けてくれるものだから
    対応表とか作るとCPUのカタログになってしまうので
    コンパイル済みのバイナリを別のマシンで実行したいならmarchやmtuneは指定しないか
    対象が分かっているならその中で一番機能が少ないプロセッサに合わせて設定したほうがいいかと
    77 : デフォルトの名無 - 2011/12/16(金) 21:45:35.33 .net (+62,+29,-44)
    普段Pythonを使っているんだけど、gcc on LinuxでCで何かの分野の処理をやるとしたら何の分野がいいかな?
    コーディングがマゾい奴はやりたくない。うひょー、コーディング楽しいって感じの週末にしたい。
    78 : デフォルトの名無 - 2011/12/16(金) 22:57:34.93 .net (+47,+24,-2)
    フィボナッチ数でも計算してろ
    79 : デフォルトの名無 - 2011/12/17(土) 04:10:44.29 .net (-1,-29,-10)
    wxPython と wxWidgets のバインディングが出来るツールをおながいしまつ
    80 : デフォルトの名無 - 2011/12/22(木) 10:18:33.81 .net (-2,-30,-37)
    windows7にしたらResource temporarily unavailableエラーが頻出するようになったんだけど
    どういうことこれ
    81 : デフォルトの名無 - 2011/12/22(木) 12:07:36.06 .net (+7,-29,+1)
    Cygwin使っているならCygwin固有の問題
    82 : デフォルトの名無 - 2011/12/28(水) 14:50:50.96 .net (-6,-29,+0)
    問題だね(´・ω・`)
    83 : デフォルトの名無 - 2011/12/31(土) 16:04:05.91 .net (+57,+29,-18)
    問題と思うから問題になる
    問題と思わなければ問題ない
    84 : デフォルトの名無 - 2012/01/01(日) 19:14:46.19 .net (+58,+29,-45)
    >>81
    win7からメモリ管理の方式が変わったらしいし
    たぶんメモリアクセスのコンフリクトだと思うんだけど
    直し方がなあ
    コンパイルするたびにがちゃがちゃとエラーで止まるのが非常にうざい
    85 : デフォルトの名無 - 2012/01/02(月) 13:01:35.03 .net (+57,+29,-4)
    具体的に
    何やったら、こうなった
    って、かいてほしいな
    87 : デフォルトの名無 - 2012/01/03(火) 13:21:45.30 .net (+1,-26,-4)
    4.6.1の情報はドコで手に入りますか?
    88 : デフォルトの名無 - 2012/01/03(火) 20:06:07.38 .net (+36,+13,+2)
    tar玉に入ってるだろ
    89 : デフォルトの名無 - 2012/01/05(木) 18:39:50.52 .net (+57,+29,-34)
    最適化しても助長なコードを吐くことがあるのを見つけちゃったよ
    90 : デフォルトの名無 - 2012/01/05(木) 19:35:52.48 .net (-1,-29,-9)
    んではそのケース用peephole optimizationを.mdに追加してくれ
    91 : デフォルトの名無 - 2012/01/05(木) 19:44:12.02 .net (+52,+29,-3)
    え、秘密にしてちゃ駄目かな?
    92 : デフォルトの名無 - 2012/01/05(木) 23:33:57.20 .net (+57,+29,+0)
    助長してくれるならいいことじゃないか
    93 : デフォルトの名無 - 2012/01/06(金) 00:22:32.22 .net (+57,+29,-26)
    転送先に書いて、転送先から同じレジスタに書き戻すことがある
    で、わかりますか?
    94 : デフォルトの名無 - 2012/01/06(金) 14:47:54.30 .net (+57,+29,-4)
    ターゲット書かないのはターゲット非依存ってことなのか、今日日x86に決まってんだろうがってことなのか
    95 : デフォルトの名無 - 2012/01/06(金) 15:14:17.60 .net (-1,-29,-6)
    複数archで確認してるよ、peephole2使って
    96 : デフォルトの名無 - 2012/01/08(日) 22:17:08.34 .net (+13,-30,-92)
    以下のようなコードでコンパイルは通るのですが
    実行した時の表示が
    1
    1
    のようになってしまいます。
    1
    2
    になるつもりで書いているのですが
    変数の受け渡しはどうすればいいのでしょうか?
    (円記号のところは本当はバックスラッシュになっています)

    #include <stdio.h>

    int test(a)
    {
    a = a + 1;
    return a;
    }

    int main()
    {
    int a;
    a = 1;

    printf("%d\n",a);

    test(a);

    printf("%d\n",a);

    return 0;
    }
    97 : デフォルトの名無 - 2012/01/08(日) 22:35:35.37 .net (-6,-29,+0)
    a=test(a);
    98 : デフォルトの名無 - 2012/01/08(日) 22:52:02.15 .net (+3,-30,-42)
    #include <stdio.h>

    void test(int *a)
    {
    *a += 1;
    }

    int main()
    {
    int a = 1;

    printf("%d\n",a);

    test(&a);

    printf("%d\n",a);

    return 0;
    }
    99 : デフォルトの名無 - 2012/01/13(金) 03:10:33.49 .net (+12,-30,-70)
    Commit: RX: Add return pattern
    http://gcc.gnu.org/ml/gcc-patches/2012-01/msg00627.html
    gcc/function.cの
    HAVE_return
    HAVE_simple_return
    の場合分けが悪いだけなのにね

    ここに書いても無駄だと思うけど、なんとなく
    100 : デフォルトの名無 - 2012/01/13(金) 14:29:13.06 .net (+59,+29,-18)
    >>99
    特定アーキテクチャの問題で共通部分に手を出すのはむずいのでふ
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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