cygwin 上で cygwin.dll を使わないバイナリを作成する
Cygwin の gcc でコンパイルすると、作成したバイナリが cygwin.dll に依存するため Cygwin のターミナル上でしか起動できない。
cygwin.dll にパスを通せばいいのだが、それでは別の PC にバイナリだけ移動して使用、とかできない。
というわけで、 cygwin.dll に依存しないようにするには cygwin 付属の gcc にある
-mno-cygwin オプションを使う。
% gcc -mno-cygwin test01.c
なお、作成したバイナリがどの dll を使っているかを確認するには objdump を使う。
※最新の cygwin でインストールされる gcc5 には -mno-cygwin オプションがないので
% objdump -p a.exe | grep -i '\.dll'
DLL 名: msvcrt.dll
DLL 名: KERNEL32.dll
上記方法は使えなくなった。 cygwin.dll 非依存にするには Visual C++ を入れるとか、 Mingw を使うとかの方法を使う。
コメント
コメントを投稿