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

    元スレCygwin + MinGW + GCC 相談室 Part 3

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

    >>495-496
    MSYS では、ってのは rxvt では、ってことだよね。
    pdcurses の getch を使うプログラムを書いて試してみたけど rxvt ではダメっぽい。

    LINES value must be >= 2 and <= -4096: got 1
    initscr(): LINES=1 COLS=1: too small.

    とか出てプログラムが異常終了する。
    ググってみると lynx や aspell で同じ問題が起こっているみたい。
    rxvt では (pd)curses は NG。

    502 = :

    質問です。非常に初歩的ですみません。

    ジョークコマンド sl を、Cygwin や その他 dll 等に依存しない、exeファイ
    ル単体で動く形にコンパイルしたいのです。

    http://chaosweb.complex.eng.hokudai.ac.jp/~hagi/contents/memo-cygwin.html#sl
    http://freethink.way-nifty.com/action/2006/06/gnuwin32_6362.html
    これらを参考に、Mingw、GnuWin32 をそれぞれフルインストールしました。
    makefile の -lcurses と sl.c の usleep を書き換えました。
    また、makefile を
    CC=c:/mingw/bin/gcc.exe
    と書き換えました。
    そこから先が分かりません。

    gnuwin32 のコマンドプロンプトから、makeを実行すると、以下のようなエラー
    が出ます。
    gcc -O -o sl sl.c -lpdcurses -ltermcap
    sl.c:30:20: curses.h: No such file or directory
    sl.c: In function `my_mvaddstr':
    sl.c:42: error: `ERR' undeclared (first use in this function)
    sl.c:42: error: (Each undeclared identifier is reported only once
    ...(略)

    ということで質問です。GnuWin32 の termcap と pdcurses を、MinGW から利
    用できるようにするには、どのように何を設定したらいいのでしょうか?

    503 = :

    >>502
    gcc の -I オプションで curses.h があるディレクトリを指定

    504 = :

    >>503
    ありがとうございます。makefileのCFLAGSを以下のように修正したところ、
    CFLAGS=-O -I "/Program Files/gnuwin32/include/"
    一歩前進し、今度はこんなエラーが出るようになりました。

    c:\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe:
    cannot find -lpdcurses
    collect2: ld returned 1 exit status
    make: *** [sl] Error 1

    今度はどこに何を設定したら良いでしょう?

    505 = :

    1を聞いて10を知れ、とは言わないがちょっとな・・・

    506 = :

    ごめんなさい、図々しいお願いですね。

    gcc の man を見ているのですが、ライブラリの検索パスを追加するオプショ
    ンが見つかりません。
    また、C:\Program Files\gnuwin32 の下に pdcurses に相当するライブラリが
    あるのかと思ったのですが、libpdcurses.a というファイルが見つかりません。
    行き詰ってしまいました。

    508 = :

    うわあ、これは恥ずかしい。申し訳ありません。
    日本語manを"ライブラリ"で検索していたので見つかりませんでした。

    c:\program files\gnuwin32\lib に pdcurses がなく、curses があったので、
    Makefile を元に戻しました。

    --- sl.c ----
    /* usleep(20000); */
    sleep(1);

    ここで今、こんなエラーが出ています。
    c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccGQbaaa.o:sl.c:(.text+0x1a4):
    undefined reference to `sleep'
    collect2: ld returned 1 exit status

    たぶん、正しいヘッダをインクルードすればいいと思うのですが。

    509 = :

    >>508
    > たぶん、正しいヘッダをインクルードすればいいと思うのですが。

    そう思うんだったら、includeディレクトリの中でsleep()の宣言を探す
    べきでしょ。たぶん無いけど。

    510 = :

    おっしゃるとおりです。見つかりませんでした。

    /MinGw/include には何もなく、

    /Program Files/gnuwin32/include には
    glibc/unistd.h に sleep() がありましたが、includeすると大量のエラー。
    winx/timex.h に nanosleep() がありましたが、
    undefined reference to `nanosleep' のエラーが出ます。

    /cygwin/include でも見つからなかったので、どうも方針がまずいようです。
    Cygwin 上だと何もせずにコンパイル、実行できましたので。

    今日はいったん中止します。

    511 = :

    このまま続けると嫌われるよ。
    おそらく、初心者板の方が適している質問と思われ。

    # -Iや-Lオプションなんて、cc時代から定番のオプションだし。
    # CygwinやMinGWの問題か切り分けられて無いし。

    512 = :

    ごめんなさい、では最後に一点だけ。

    /* usleep(20000); */
    この行をコメントアウトすると、コンパイルは通るようになりました。まあ実
    行すると、一瞬で終わってしまうのですが。

    ただし、カレントディレクトリに curses2.dll を必要とします。exeファイル
    のみで実行できるようにならないでしょうか?

    見よう見まねで gcc に -static オプションを付けてみましたが、大量にコン
    パイルエラーが出てしまいます。

    c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x34):
    undefined reference to `_imp__stdscr'
    c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x4f):
    undefined reference to `imp( *) static'
    c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x6b):
    undefined reference to `_imp__stdscr'

    513 = :

    >>512
    そのpdcursesにスタティックリンク用のライブラリが添付されてない限
    り、キミには無理。

    515 = :

    先ほどの者ですが、解決しました。

    #include <windows.h>
    ...
    Sleep(20);

    Windowsプログラミングに詳しい知人にアドバイスされ、このように修正したと
    ころ、見事に動くようになりました。

    どうもお騒がせしてすみませんでした。ありがとうございました。

    516 = :

    最初からそいつに聞け糞が

    そいつはそいつで、掲示板で聞けようぜえ
    と思ってるだろうがな

    517 = :

    「mingw sleep」でググるだけで、ヒントがたくさん出てくるんだけどなあ。

    518 = :

    ごめんなさい、訳があって急ぎだったので、無神経な質問をしてしまいました。
    ご迷惑をおかけしました。
    今度Java質問スレで、超初心者にていねいに答えますので、それで埋め合わせ
    にさせてください。

    519 = :

    人に教えてる暇があったら勉強しろ

    520 = :

    以上 >502 の日記からお伝えしました

    521 = :

    Cygwinでcファイルをコンパイルしようとしたところ、
    3[main] ? 26824 init cheap: Couldn't reserve 3600336 bytes of space for cygwin's heap, Win32 error 487

    というエラーメッセージを4つ吐くのですが、解決策はありますでしょうか?
    ググってみて、再インストールもしてみたのですができませんでした…

    WinXP Home SP2
    RAM DDR SDRAM 512MB

    523 = :

    guileのinfoにある例(インタプリタを作るだけ)をmingwでコンパイルしたら
    sys/select.h
    ieeefp.h
    が無いと言われてしまいます。
    確かに/includeにも/mingw/includeにもそんなファイルはありゃしませんが。
    mingwじゃlibguileは使えないのでしょうか?

    バージョンは
    gcc: 3.4.2
    guile: 1.8.2
    です。

    524 = :

     _____ ___
    <ー、\\ヾiγ/rニミ
     \ヾヘヽヽリ川///γ
      >川/ ̄"""" ̄「リ
      (ヘir-=o=ッィ=o=j
     _ハ| `ー/ ii、i
    <\ ヽヽ `ー′/
     \ヽ \  ̄ ̄/∩へ  Cygwinじゃ駄目なのか?
    __ii   ̄/二ノ レ<    guileのmakeに必要な環境やライブラリはあるのか?
    ヘヘヘ\ヽニ>-イ|( Y/)
    ノ// / ヽ_ノ|ヽハ/)
    ノ ̄  `ー | |ヒ/

    525 = :

    >>524
    試しにcygwinでやってみたら、gmpを入れてないのでハネられます。
    まあ、gmp入れてcygwinでやればいいだけなんだろうけど。
    主力環境がmingwなのでmingwでやりたいなと。

    528 = :

    ないと思うが…

    529 = :

    では、mingwの位置づけ云々は関係ないような。
    select.hを使わないようにconfigureできないものか。

    530 = :

    >>529
    mingwの位置付けが判っていたら当然そういう風に行動するだろ?
    ってか guile をビルドの話なのか?
    guile をビルドするときなら configure --disable-posix とかあった気がするが…

    532 = :

    じゃあきっとそのlibguileは --disable-posix で作られてるんだろ?

    533 = :

    >>532
    guileの意義がわかんねーなら上から目線で語るなよwwww

    534 = :

    …と、>>533が最上位から申しております。

    535 = :

    Cygwinでgcovを使いたいのですが、
    gccに-mno-cygwinのオプションを付けて実行すると以下のようなエラーが出ます。
    test.gcda:Version mismatch - expected 304m got 304c

    -mno-cygwinを付けてgcovを使うことはできないのでしょうか?

    Cygwinのバージョンは1.5.25-7です。

    537 = :

    >>535
    http://www.cygwin.com/ml/cygwin/2007-11/msg00180.html

    539 = :

    >>537
    Cygwinで-mno-cygwinを使う代わりに本物のMinGWを使うことで解決できました。
    ありがとうございました。

    541 = :

    ckのソースどっかに落ちとらんかのー

    542 = :

    どぞ http://www.ch-werner.de/ck/

    543 = :

    ん? ck違い!? とりあえずサンクスコ

    544 = :

    浮動小数点演算を行なうルーチンをコンソールアプリ(main関数)から呼んだときと
    Win32 API で書いた GUI アプリから呼んだときとで計算結果が違うという問題に
    悩まされています。どなたか解決策をご存じないでしょうか。

    問題を再現する、できるだけ小さなプログラムを作りました。
    http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6078.zip
    付属の Makefile は MinGW (GNU make)用です。
    test1.exe(コンソールアプリ)と test2.exe(GUI アプリ)をビルドして実行します。
    どちらも init.c の initialize() を呼び出します。
    initialize() は double 型の配列 x を初期化する関数です。
    計算結果を見るために x[5] と x[6] をカレントディレクトリの output.txt に書き出しています。
    gcc version 3.4.5 (mingw special) では以下のようになりました。

    test1.exe
    x[5] = 4.7474747474747475e-001
    x[6] = 4.6969696969696967e-001

    test2.exe
    x[5] = 4.7474747474747475e-001
    x[6] = 4.6969696969696972e-001

    同じルーチンを呼んでいるのに x[6] の値が異なります。x[5] は一致しています。

    比較のために VC++ Toolkit 2003 (nmake.exe) 用の Makefile.vc も入れておきました。
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
    でコンパイルしたところ2つのプログラムの計算結果が配列 x の全要素について一致しました。
    MinGW (gcc) でコンパイルしたときの test2.exe の計算結果と一致しています。
    すなわち test1.exe の計算結果がおかしいようです。

    どなたか解決策をご存知の方がいらっしゃいましたらご教示下さい。よろしくお願いいたします。

    545 = :

    面倒だからソースは見ていないけど、どちらかはFPUで計算を行いどちらかはSSEで計算を行なっていると思われる。
    コンパイルオプションで強制できるから、必要なら強制すればいい。
    但し、doubleの精度を超えた領域の話なのでどちらも間違っているとはいえない。

    546 = :

    ./test1
    4.7474747474747475e-001
    4.6969696969696967e-001
    ./test2
    4.7474747474747475e-001
    4.6969696969696967e-001

    gcc version 4.1.2

    ごめん、役に立てそうも無いw
    とりあえずmap出力してdiff取ってみたらどうか

    547 = :

    アセンブリ出力を見るだけだろ。常考


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

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


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