cygwinで-mno-cygwinオプションの有無によって動作の変わる原因について
こんにちは、shigre2005と申します。
私は普段UNIX上でC言語のプログラムを書いているのですが、わけあってWindows上で動くようにする必要が出てきました。そのプログラムをそのままcygwinでコンパイルしたところコンパイルでき、実行ファイルも問題なく実行できたのですが、このままですとcygwin1.dllが必要になってしまいます。
上記のような質問を前回した際に、gccに-mno-cygwinオプションをつければよいと教えていただき、そのときはうまく行ったのですが、今回はなぜかうまく行きません。オプションをつけないときは普通に実行できるのですが、つけると、リンクの段階で以下のようなエラーが出てしまいます。
/usr/lib/gcc-lib/i686-pc-mingw32/3.3.3/../../../../i686-pc-mingw32/bin/ld: crtbe
gin.o: No such file: No such file or directory
make: *** [all] Error 1
makefileを使っていて、GTKを使用しています。-mno-cygwin以外のコンパイルオプションは以下のものをつけています。
(.c→.o)
-Wall -DGTK_DISABLE_DEPRECATED -mms-bitfields `/usr/bin/pkg-config --cflags gtk+-win32-2.0`
(.o→.exe)
-Wl,--subsystem,windows `/usr/bin/pkg-config --libs gtk+-win32-2.0`
-mno-cygwinは(.o→.exe)の方につけています。
gccのバージョンは、4ではうまく動かなかったので、3.3.3を使っています。
どうぞよろしくお願いします。
補足
プログラムは,画像をファイルから読み込んで表示させるものです. RedHatでは問題なく動きます. pixmap_image = gdk_pixmap_create_from_xpm(window->window, &mask_ball,&style->bg[GTK_STATE_NORMAL], image.xpm); この部分をコメントアウトすれば実行はできるようなので,ファイルの読み込みで問題が発生しているようです.