在cygwin中使用fork编译程序的问题

时间:2011-09-17 00:46:50

标签: gcc cygwin fork

我正在尝试在cygwin中运行一个包含fork和wait的简单程序。 我认为编译很容易,但我遇到了问题。

#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;
}

编译使用: gcc -Wall -Wextra -o test.o test

我收到以下错误:

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

我确信我错过了一些微不足道的东西。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

链接器无法找到标准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 - 有些东西坏了。

答案 1 :(得分: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说什么?

答案 2 :(得分:0)

似乎正在调用MinGW gcc,因为未安装cygwin gcc包。

您可以通过调用cygwin命令行中的"cygcheck -c"验证是否会列出所有已安装的软件包,如果您在列表中找不到需要安装它的gcc