Проблема компиляции программы с использованием fork в cygwin - PullRequest
1 голос
/ 17 сентября 2011

Я пытаюсь запустить простую программу в 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 ]

3 голосов
/ 17 сентября 2011

Компоновщик не может найти стандартные библиотеки 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 голосов
/ 15 января 2013

Кажется, что MinGW gcc вызывается, потому что пакет cygwin gcc не установлен.

Вы можете проверить это, вызвав "cygcheck -c" в командной строке cygwin, которая выведет список всех установленных пакетов,если вы не можете найти gcc в списке, вам нужно установить его

0 голосов
/ 17 сентября 2011

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

Вы вызываете gcc из командной строки Cygwin?Что type gcc говорит?

...