こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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を使っています。

どうぞよろしくお願いします。

投稿日時 - 2006-09-26 13:23:42

QNo.2432619

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

Cygwinのインストール時に、MinGWは正しく選択されていますか?(gcc-mingw-coreあたり)
あるいは、ご自身でGCCをコンパイル~インストールされたのでしょうか?

また、普通にgccを使って(-mno-cygwinで)リンクしようとすると、crtbegin.oはリンクされなかったような気がします。リンクのためのコマンド全文を補足してください。

投稿日時 - 2006-09-26 16:16:27

補足

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`
です。

どうぞよろしくお願いします。

投稿日時 - 2006-09-27 15:38:09

あなたにオススメの質問