2010-10-27 12 views
6

Mam bardzo prosty program w C:Makefile: ERROR1

int main() 
{ 
    return(1); 
} 

i prosty Makefile:

all: 
    gcc -ansi -pedantic -o tmp tmp.c 
    ./tmp 

Jednak, gdy wpisuję make pojawia się następujący komunikat o błędzie:

$ make 
gcc -ansi -pedantic -o tmp tmp.c 
./tmp 
make: *** [all] Error 1 

Co oczywistego mi brakuje?

Odpowiedz

20

Wykonywać wyjścia z błędem, jeśli jakieś polecenie wykonuje wyjścia z błędem.

Ponieważ program kończy pracę z kodem 1, make widzi to jako błąd, a następnie zwraca ten sam błąd.

Można powiedzieć, zrobić, aby zignorować błędy poprzez umieszczenie - na początku linii tak:

-./tmp 

można zobaczyć więcej na temat obsługi w makefile here błędu.

+0

Wiedziałem, że to będzie oczywiste. Dzięki (dla wszystkich) za bardzo szybkie odpowiedzi – csgillespie

+2

+1, za ignorowanie części. – codaddict

+0

Tak, kilka miesięcy temu napotkałem ten dokładny błąd. Musiałem ponownie przejrzeć składnię, aby zignorować błędy, nie jest to coś, czego używam na tyle, by pamiętać. –

4

Powracasz kod błędu 1 ze swojej aplikacji. Zadaniem Make'a jest zgłoszenie tego jako błędu!

4

To dlatego program wraca 1.

Sprawia robi kompilacja za pomocą gcc, który idzie w porządku (powroty 0), więc wpływy z realizacją, ale program zwraca wartość niezerową, dlatego zgłasza to jako błąd.

Program pomyślnego zakończenia powinien zwrócić wartość 0 i zwrócić wartość inną niż zero w przeciwnym przypadku.