▼スレッド
│
└◇633:MinGWでのfork [Kiki] 10/04 14:30
└◇634:Re:MinGWでのfork [nsym] 10/04
└◇635:Re:MinGWでのfork [Kiki] 10/04 <
はじめまして、Kikiといいます。よろしくお願いします。スレッド一覧
fork()関数を使用したプログラムをLinux上で
作成しました。コンパイル時には、特にオプションも
つけずに
gcc file.c
でコンパイルできたのですが、
gcc -mno-cygwin -mwindows file.c
と、Windowsアプリケーションとしてコンパイルすると
undefined reference to `fork'
collect2: ld retruned 1 exit status
と怒られてしまいます。
Web上で検索すると、
-lnsl -lsocket
というオプションをつけてコンパイルしている例が
あったので試してみたのですが、ldに
cannot find -lnsl
といわれてしまいました。-lsocketも同様です。
Windowsアプリケーションとしてコンパイルする方法について
なにか御存知の方、お知恵をかしてください。
よろしくお願いします。
-no-cygwin -mwindows を外してみてください。スレッド一覧
fork() は cygwin.dll に含まれているので -no-cygwin は指定できません。
そうして出来た EXE は cygwinコンソールで実行されることになります。
main()で始まるけど通常の Win32アプリとして起動したい場合は
ソースに
extern void mainCRTStartup(void);
extern void WinMainCRTStartup(void) { mainCRTStartup(); }
を含め -mwindows でコンパイルすればいいはずです。
nsymさん、ありがとうございます。スレッド一覧
早速、試して見たところ、forkで引っかかることなく
コンパイルすることができました。
ソースに
extern void mainCRTStartup(void);
extern void WinMainCRTStartup(void) { mainCRTStartup(); }
を含めて
gcc -mwindows file.c
でOKでした。
ありがとうございました。