2012-03-11 3 views
0

메이크 파일에 무엇이 들어가는 지 명확하지 않고 헤더 파일에 무엇이 들어 있는지 잘 모르겠습니다. 나는 메이크 파일의 형식을 가지고 이해하는 것과헤더 파일 및 메이크 파일의 형식/목적은 무엇입니까? (C)

:

target: dependencies 
     instructions 

하지만 그건 나를 위해 작동하지 않았다. 여기에 내가했던 정확히 무엇 :

library: login.o linked.o cipher.o 
    gcc -o library login.o linked.o cipher.o 

login.o: login.c linked.h 
    gcc -c login.c 

linked.o: linked.c cipher.h 
    gcc -c linked.c 

cipher.o: cipher.c 
    gcc -c cipher.c 

내가 컴파일러라고 명령 줄에 "메이크 파일을"입력 할 때 "합니다 아무 것도`메이크 파일 '에 대한 수행되지하는". 형식이 잘못되었다고 생각합니다. 또한 라이브러리 부분은 무엇입니까? 방금 어딘가에서 그것을 복사했습니다. 모든 메이크 파일에 하나가 있습니까?

또한 메이크 파일 (makefile.txt, makefile.c)에 대한 확장 기능이 있습니까?

makefile의 이름을 makefile로 지정해야합니까? 내가 taliasmakefile 또는 makefile69 또는 lykeim2freespirited4skool 또는 iwanaBahippie라고 부를 수 있을까요?

헤더 파일의 경우 정확히 무엇이 들어 있는지 명확한 예제를 찾을 수 없습니다. 다른 파일에 액세스 할 수있게하려는 변수를 포함합니까? 아니면 함수 프로토 타입입니까?

저는 C가 정말이에요. 누군가 제가 제게 5 살이라고 설명해 주시겠습니까?

+1

탭을 사용하여 공백이 아닌 지시 사항을 들여 썼는지 확인 했습니까? 탭으로 작업하는 것이 중요합니다. – Flexo

+1

Makefile은 C와 완전히 직교합니다.그것들은 C 소스 코드를 응용 프로그램으로 컴파일하는 작업을 자동화하는 데 일반적으로 사용되는 도구 일뿐입니다. 헤더 파일의 작동 방식을 이해하려면 [좋은 책] (http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)을 얻는 것이 좋습니다. –

답변

4

make을 실행하면 Makefile이라는 파일이 검색됩니다. 사용할 메이크 파일을 지정할 필요가 없습니다. 인수가 없으면 make은 (일반적으로) 파일의 첫 번째 대상을 작성합니다. Makefile은 확장 기능이 필요 없으며 다른 것들로 이름 지어 질 수 있습니다 (그러나 당신은 어디를보아야하는지 make에게 말해야합니다).

헤더 파일은 .c 파일에 넣은 코드 (게다가 프리 프로세서 #define과 같은 다른 것들)에 액세스해야하는 함수 프로토 타입, 유형 및 (전역) 변수 용입니다.

1

컴파일 및 링크 C 소프트웨어를 만드는 데는 두 단계가 있습니다.

.C 파일을 오브젝트 파일로 변환하면 컴파일됩니다.

링크는 모든 오브젝트 파일을 통합하여 라이브러리 또는 실행 파일로 만듭니다.

헤더 파일은 컴파일하는 동안 사용되며 링크 할 때 찾아야 할 정보가 있습니다. 즉 .. X라는 함수가 있어야하고, Y 등의 변수가 있어야합니다. 또는 여러 C 파일에서 공통적으로 사용되는 것들을 정의합니다. 예 : MAX_WIDGETS. 즉, 한 .c 파일이 다른 .c 파일에 구현 된 것을 사용하거나 .c 파일에서 공통된 것을 정의하는 방법입니다.

Makefile은 .hc를 컴파일하고 연결 한 다음 파일로 수행하려는 다른 변환을 통해 실행하는 방법에 관한 모든 것입니다.

0

makefile에는 아무런 문제가 없지만 "makefile"이라는 대상은 없습니다. -f 옵션을 사용하여 파일 : make -f makefile을 선택하십시오. 그러나 파일에 표준 이름 (Makefile, makefile, ...) 중 하나가 있기 때문에 필요하지 않습니다.