2013-03-24 2 views
-2

새 C 프로그램을 만들려고하는데 프로그램을 컴파일 할 수 없습니다. 내 메이크 파일이 잘못되었을 수 있기 때문입니다. 나는 계속해서 "목표를 '모두'로 만드는 규칙이 없으며 '목표를'깨끗하게 '만드는 규칙이 없습니다." 여기에 지금까지 무엇을 가지고 :내 C 프로그램을 컴파일 할 수 없습니다. Makefile 오류

메인 프로그램 :

#include <stdio.h> 

Sleepy() { 

main(); { 
    printf("Hello world"); 
} 

} 

헤더 (나는 아직 아무것도하지 않았지만) :

#ifndef SLEEPY_H_ 
#define SLEEPY_H_ 



#endif /* SLEEPY_H_ */ 

그리고 메이크 :

CC = gcc 
CFLAGS = -c 

Sleepy.o: Sleepy.c Sleepy.h 
$(CC) $(CFLAGS) Sleepy.c 

Sleepy: Sleepy.o 
$(CC) -o Sleepy.exe Sleepy.o 


all: Sleepy 

clean: 
rm -rf *.0 a.out 

make = all 

저는 모든 종류의 자습서를 읽었지만 제대로 작동하지는 않습니다. 누군가가 이걸 도와 줄까요?

+3

을 메이크 문제가 해결 된 후에는 컴파일러에서 불만을 얻을 것이다. 원본이 올바르지 않습니다. –

+0

@DanielFischer 어느 쪽이 졸리다. 나는 생각한다? 어쨌든, 여기에 이런 질문을 게시해서는 안됩니까? 2 득표가 그렇게 말할 것 같습니다. – blutuu

+0

@blutuu 당신은'sleepy.c'에 몇 가지 첫 주문 문제가 있습니다. 먼저, Sleepy() 함수에서'main'을 가져와야합니다. 즉, main 함수를 독립적으로 정의해야합니다.'CTOR'을 쓰려고합니까? 다음으로 main은'main();과 같이'세미콜론'을 가진다. 당신의 목적을 위해서 * 세미콜론을 제거하십시오. 'main'은 정수를 반환해야하므로'int main()'을 정의하고 main의 끝에'return 0; '을 수행하십시오. 마침내 makefile에서 메이크 파일의 끝 부분에서'make = all'을 제거 할 수 있습니다. – Ganesh

답변

1

편집을 수행하려면 다음과 같이 변경해야합니다.

Sleepy.c

#include <stdio.h> 

int main (void) { 
    printf("Hello world"); 
} 

메이크

CC = gcc 
CFLAGS = -c 

all: Sleepy 

Sleepy.o: Sleepy.c Sleepy.h 
    $(CC) $(CFLAGS) Sleepy.c 

Sleepy.exe: Sleepy.o 
    $(CC) -o Sleepy.exe Sleepy.o 

clean: 
    rm -rf *.o Sleepy.exe 

당신의 Makefileclean 규칙의 변경 사항을 유의하시기 바랍니다.Sleepy.oSleepy에 대한 규칙은 TAB가 아닌 공간으로 상쇄되어야한다 : 당신은 Sleepy.exe

참고 인 실행 파일을 제거해야합니다. 그 밖에,이 오류로 실행됩니다 : makefile:5: *** missing separator. Stop

+0

. 0은 실수 였고 나는 고쳐 썼다. 변화가 있더라도 편집 할 필요는 없습니다. – blutuu

+0

또 다른 것; 명령 프롬프트에서 실행해야합니까? Eclipse를 사용하고 있기 때문입니다. – blutuu

+0

@ blutuu .. 내 최신 업데이트를 확인하십시오. 이 방법이 효과가 있습니까? – Ganesh

0

이 하나를 시도,

All: sleepy 

sleepy: sleepy.c sleepy.o sleepy.h 
     gcc sleepy.c -o sleepy 
clean: 
     rm -f *.o 
+0

'gcc -c sleepy.c -o sleepy.exe'는 실행 파일이 아니라 객체 파일을 생성 할 것입니다. 컴파일 단계 후에'sleepy.exe'를 실행할 수 없습니다. – Ganesh

+0

@ 가네쉬 감사합니다. 나는 그것을 모르고있다. 나는 변화를 만들었다. "sleepy.exe"를 실행 파일로 만드는 방법은 무엇입니까? – SRJ

+0

@SRJ ..'sleepy'는 오브젝트 파일 일 뿐이므로 업데이트 된 주석은 정확하지 않습니다. 실행 파일을 생성하려면'gcc -o sleepy sleepy.c '를 사용하십시오. 즉,'-c'를 제거하십시오. 컴파일러에게'컴파일 만하면됩니다' – Ganesh

관련 문제