我正在尝试在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
我确信我错过了一些微不足道的东西。有什么想法吗?
答案 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