• 締切済み

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を使っています。 どうぞよろしくお願いします。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

Cygwinのインストール時に、MinGWは正しく選択されていますか?(gcc-mingw-coreあたり) あるいは、ご自身でGCCをコンパイル~インストールされたのでしょうか? また、普通にgccを使って(-mno-cygwinで)リンクしようとすると、crtbegin.oはリンクされなかったような気がします。リンクのためのコマンド全文を補足してください。

shigure2005
質問者

補足

cygwinインストール時にMingw関係、というよりDevelに該当するものは全てインストールしています。gcc-mingw-coreは「20050522-1」のバージョンを利用しています。 リンクのためのコマンド文は、 gcc -O1 -DRELEASE -D_RELEASE -o [実行ファイル名] [オブジェクトファイル名群] -lm -Wl,--subsystem,windows `/usr/bin/pkg-config --libs gtk+-win32-2.0` です。 どうぞよろしくお願いします。

関連するQ&A

専門家に質問してみよう