2011-09-17 8 views
1

cygwinでforkとwaitを含む簡単なプログラムを実行しようとしています。 コンパイルがとても簡単だと思っていましたが、問題があります。 のgcc -Wall -o -Wextra test.oテストcygwinでforkを使用してプログラムをコンパイルするときの問題

を私は次のエラーを取得する:

C:\Users\Aaron\AppData\Local\Temp\ccgh3MfS.o:ostest.c:(.text+0x11): undefined reference to `fork' 
C:\Users\Aaron\AppData\Local\Temp\ccgh3MfS.o:ostest.c:(.text+0x22): undefined reference to `wait' 
collect2: ld returned 1 exit status 

私は些細な何かが欠けてると確信して使用してコンパイル

#include <stdio.h> 
#include <unistd.h> 

void testFork(){} 

int main(int argc,char* argv[]){ 

    if (fork()==0) {testFork();return 0;} 
    while (wait() == -1); 
    return 0; 
} 

。何か案は?

答えて

2

標準のCライブラリが見つかりません。

通常の方法でCygwinをインストールしましたか? (ここに簡単なガイドがあります:http://www.eecg.utoronto.ca/~aamodt/ece242/cygwin.html)。

は、あなたがさらに簡単なプログラムをコンパイルすることができました:

#include <stdio.h> 

int main(int argc, char **argv) { 
    printf("Found C library.\n"); 
} 

それがコンパイルされない場合は、あなただけのCygwinを削除して再インストールしようとする場合があります - 何かが壊れています。

+0

をインストールする必要があり、リスト内のgccを見つけて、すべてのコンパイルを待つことができない場合は、すべてのインストール済みパッケージを一覧表示しますCygwinのコマンドラインで"cygcheck -c"を呼び出すことによって、そのことを確認することができますfine – twerdster

+2

Cygwin gccを使用していますか?あなたはWindows CMDのパスにgccを入れたかもしれない他のソフトウェアをインストールしましたか(私はMinGWを考えていますが、fork()とwait()関数を利用できません)。 – dvorak

+1

ありがとうdvorak。それが問題の一部でした。 – twerdster

0

C:\Users\Aaron\AppData\Local\Temp\ccgh3MfS.oは、Windowsスタイルのパスです。 Cygwinを使用している場合は、Cygwin形式のパスしか表示されません。おそらく/cygdrive/C/Users/Aaron/AppData/Local/Temp/ccgh3MfS.oのようなものです。

あなたのコマンドラインが

gcc -Wall -Wextra -o test.o test 

だったが、それはおそらく

gcc -Wall -Wextra -o test.o test.c 

と言ったあなたは、Cygwinのコマンドラインからのgccを呼び出していますか? type gccとは何ですか?

0

cygwin gccパッケージがインストールされていないため、MinGW gccが呼び出されているようです。

あなたは、あなたがフォークがなければ

関連する問題