cygwin + mingwn + gcc 相談室
実行環境以前に Cを理解してないのが問題なので、
もうここでは止める、がよろし。
936 :
デフォルトの名無しさん:2005/07/29(金) 23:57:41
UNIT GenieList;
INTERFACE
USES
SANE, DialogUtils, GFiles, GCommonDec;
PROCEDURE MAIN (lMessage: INTEGER;
lSelect: BOOLEAN;
lRect: Rect;
lCell: Cell;
lDataOffset, lDataLen: INTEGER;
lHandle: ListHandle);
IMPLEMENTATION
PROCEDURE MAIN (lMessage: INTEGER;
lSelect: BOOLEAN;
lRect: Rect;
lCell: Cell;
lDataOffset, lDataLen: INTE
これ何言語かわかりますか?
ファイルの拡張子は.pです。
cygwinの最新版をフルインストールしたらsysvinit.shを実行するところでフリーズ。
そのまま一晩放置したところ、空き容量30GByteのハードディスクが満杯に。
復帰するのに3日かかったよ・・・
cygwin, gcc ver 3.4.4にてプロファイラが使いたいと思っています。
/*proftest.c*/
#include <string.h>
int main(void)
{
char ss[80] = "abcdefgh";
char str[80] = "ABCDEFGH";
int i;
for(i=0;i<10000;i++){
strcmp(ss, str);
strncmp(ss, str, 8);
}
return 0;
}
こんなサンプルコードなんですがどうやったらプロファイルができるのか分かりません。
↓のようなコマンドでやってみたりもしましたが
$ gcc proftest.c -p -o proftest
下記のような変なエラーが出てしまいます。
どうすればいいんでしょうか
/*変なエラー*/
/cygdrive/c/DOCUME~1/giko/LOCALS~1/Temp/ccmOHUj1.o:proftest.c:(.text+0x9): u
ndefined reference to `_mcount'
/cygdrive/c/DOCUME~1/giko/LOCALS~1/Temp/ccmOHUj1.o:proftest.c:(.text+0x20):
undefined reference to `_mcount'
/cygdrive/c/DOCUME~1/giko/LOCALS~1/Temp/ccmOHUj1.o:proftest.c:(.text+0x35):
undefined reference to `_mcount'
〜〜以下略〜〜
$ gcc proftest.c -pg -o proftest
>943さん
このコマンドでコンパイルできました、ありがとうございます。
ですが、
$./prof, $profとしても
bash: ./prof: No such file or directory
と言われてしまい目的が果たせません。
プロファイラを実行するのに必要なコマンドってありますか?
>>944 gprof
その質問を見るに、なんだか基礎知識が激しく不足してそうね。
>>944 $ gcc -pg -o proftest proftest.c
$ ./proftest
$ gprof ./proftest > proftest.gprof
でどう?
できた、できた、できました〜〜
>946さんありがとうございます。
精進してきます。
948 :
1:2005/08/02(火) 12:56:06
>>950 次スレよろ
それとタイトル直してくだちい
cygwin + mingw + gcc相談室ね
MinGWだとWinows、mingwだとクロス環境をイメージしてしまう。
cygwin上だからクロスだろ、と言われるとそうかなと思ったり思わなかったり。
>948
当方plala。合点承知した!
コンソールを表示するDLLって生成できますか?
もっと噛み砕いて、
それどう解釈する?DLLだとなぜできないと?
953 :
951:2005/08/06(土) 02:09:14
あ、思いっきり説明不足だな…すまん…orz
DLLのデバッグにSTDOUT(printf等)を使いたい
プラグインなので親アプリ側で作るのは不可能
で、DLL側でコンソールを表示させられないかと…
リストコントロールでもええんちゃうの?Cygwinじゃ多少めんどくさいけど。
ファイルにでも出力するとか
ファイルにappendで出力して tail -f が一番簡単
957 :
951:2005/08/06(土) 03:32:47
使っているライブラリの出力先がSTDOUT及びSTDERRなのでこれらのメッセージを取れないと
意味ないんです(インタプリタの組み込みをやっているので…)
STDOUTをリストコントロールとかファイルに出力する方法ってあるんですか?
AllocConsole()とかじゃ駄目なの?
stdoutなりstderrなりをファイルにすればいいだけでは?
962 :
デフォルトの名無しさん:2005/08/07(日) 10:25:48
gcc-4.1-20050806がビルドできないorz
次のsnapshot待つしかないんですかね…?
../../gcc/libgcc2.c:772: error: unrecognizable insn:
(insn 30 29 31 2 ../../gcc/libgcc2.c:769 (set (subreg:SI (reg:DI 202) 0)
(if_then_else:SI (eq:SI (reg:SI 203)
(const_int 0 [0x0]))
(subreg:SI (reg:DI 202) 0)
(subreg:SI (reg:DI 202) 4))) -1 (nil)
(expr_list:REG_NO_CONFLICT (reg/v:DI 200 [ x ])
(expr_list:REG_NO_CONFLICT (reg/v:SI 198 [ i ])
(nil))))
../../gcc/libgcc2.c:772: internal compiler error: in extract_insn, at recog.c:20
84
964 :
デフォルトの名無しさん:2005/08/20(土) 14:09:01
MSDNヘルプにCのライブラリを使う場合は
CreateThreadじゃなくて_beginthreadexを使えって書いてあるんですが、
これって"msvcrtを使う場合は"っていう意味でしょうか?
だとしたらcygwinではCreateThreadを使っても問題無しで
mingwでは_beginthreadexを使わなければメモリリーク発生の可能性があり
BCCとか他のVCランタイム使わないコンパイラでは
もちろんCreateThreadで問題無いということでしょうか?
CreateThreadはスレッドだけ作ってランタイムの初期化が行われないって
だけだから、結局ランタイムを使いたいときは環境ごとにやり方を調べる
しかない。
Cygwinはpthreadを使わないときつかったような。
日本語のMSDNだとCランタイム使用すると必ずリークするみたいに書いてあるけど、
↓にはもう少し詳しい説明があるね
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createthread.asp A thread in an executable that calls the C run-time library (CRT)
should use the _beginthread and _endthread functions for thread
management rather than CreateThread and ExitThread; this requires
the use of the multi-threaded version of the CRT. It is safe to call
CreateThread and ExitThread from a thread in a DLL that links to the
static CRT as long as the thread does not call the
DisableThreadLibraryCalls function.
ちょっと、ここの人とは環境違うみたいだが・・・適当な場所が思いつかんので・・・誘導プリーズ。
ホストVine Linux、ターゲットi386-mingw32でgccをコンパイルしたら
sys/wait.hがないと怒られるんだが・・・
へるぷみー
969 :
デフォルトの名無しさん:2005/09/01(木) 12:04:47
保守
VCから乗り換えで、cygwinでgccを使い始めたばかりなのですが、
gcc -o test test.c
で生成されたtest.exeはクリックするとcygwin.dllがありませんと出てしまいます。
いわゆるリリース版は、どのように生成すればよいのでしょうか?
御指南をお願いします。
>>970 それでリリース版だよ。
VCでコンパイルしたらkernel32.dllやuser32.dllに依存するでしょ。それと似たようなもの。
cygwinで普通にコンパイルするとcygwin.dllに依存した形になるので、
cygwin.dllがパスの通る位置においてある必要がある。
-mno-cygwin
cygwin1.dll
974 :
970:2005/09/06(火) 21:22:13
できました。ありがとうございます。m(_ _)m
>>974 Cygwin固有のUNIXシステムコールを使う気が無いのなら、MinGWがおすすめ。
すなわちそれが mingw
すなわちそれが mingwn
次スレもこのままのスレタイで行こうじゃないか
>>980 次スレよろ
チキンレース!!!
↓よろしく
おっ立ててきます。
982 :
977:2005/09/07(水) 23:33:02