2009-09-25 25 views
6

gccを実行するウィンドウにcygwinがあります。しかし、.exeファイルを作成した後、cygwinを持っていない他のコンピュータでそれらを実行すると、cygwin1.dllが見つかりませんでした。どのシステムでも実行できるようにコンパイルする方法はありますか?gccでコンパイルする(Windows上のcygwin)

答えて

10

、cygwinので
を(もちろんあなたはcygwin1.dllがを配布するCygwinのlicenseに関して遵守しなければならない)だけでなくはcygwin1.dllをコピーしよう(しかし、それは同様に他のDLLに依存できます) 、あなたはいつも使用して必要なモジュールを確認することができます。

objdump -p a.exe | grep 'DLL Name' 

OR

cygcheck ./a.exe 

または一般にWindows用

は、このツールのようなものを使用します: Dependency Walker

+0

cygcheckさんの言葉: "cygcheck a.exe"と書かれた場合、 "エラー:a.exeを見つけることができませんでした" – avd

+2

使用: "cygcheck ./a.exe" – Amro

4

コンパイルは、コマンドラインオプション-mno-cygwinで試すことができます。

11

MinGW(最小GNU Win32)モードでコンパイルする必要があります。これを行うには、cygwinではなく(またはそれに加えて)mingwをインストールするか、--mno-cygwinコンパイラオプションをcygwin gccに渡します。あなたのケースでは

+0

私のプログラムではfork関数を使用しています。 -mno-cygwinを使用すると、定義されていないforkと表示されます。 – avd

+2

その後、ユーザーにcygwin1.dllを提供する必要があります。 Windows自体はfork()システムコールを提供しません。フォークを使わないようにコードを書き直すのが最善です。 –

0

は、どのように私はCygwinを使用していないWin32実行ファイルをコンパイルするには?

mingw-gcc、mingw64-i686-gcc、およびmingw64-x86_64-gccパッケージによって提供されるコンパイラは、Cygwinではなく標準のMicrosoft DLLとリンクします。これは、UNIXエミュレーションレイヤーを必要としないネイティブWindowsプログラムにとって望ましいものです。

「MinGW」(Minimalist GNU for Windows)と混同しないでください。完全に別の作業です。

関連する問題