Problem compiling program using fork in cygwin

。_饼干妹妹 提交于 2019-12-13 01:25:39

问题


I am trying to run a simple program in cygwin that includes fork and wait. I thought it would be very easy to compile but I am having problems.

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

Compiled using: gcc -Wall -Wextra -o test.o test

I get the following error:

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

I'm sure I'm missing something trivial. Any ideas?


回答1:


The linker can't find the standard C libraries.

Did you install Cygwin in the normal way? (Here's a simple guide: http://www.eecg.utoronto.ca/~aamodt/ece242/cygwin.html).

Have you been able to compile even simpler programs:

#include <stdio.h>

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

If that doesn't compile, you might just want to try removing and reinstalling Cygwin - something is broken.




回答2:


C:\Users\Aaron\AppData\Local\Temp\ccgh3MfS.o is a Windows-style path. If you're using Cygwin, you only be seeing Cygwin-style paths, perhaps something like /cygdrive/C/Users/Aaron/AppData/Local/Temp/ccgh3MfS.o.

You said your command line was

gcc -Wall -Wextra -o test.o test

but it was probably

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

Are you invoking gcc from the Cygwin command line? What does type gcc say?




回答3:


It seems that MinGW gcc is being invoked because the cygwin gcc package is not installed.

You can verify that by calling the "cygcheck -c" in the cygwin commandline which will list all the installed packages, if you can't find the gcc in the list you need to install it



来源:https://stackoverflow.com/questions/7451702/problem-compiling-program-using-fork-in-cygwin

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!