Linux 에서 C 프로 그래 밍 의 Makefile
/*main.c*/
#include "mytool1.h"
#include "mytool2.h"
#include <stdio.h>
int main(int argc,char *argv[])
{
mytool1_print("hello");
mytool2_print("hello");
}
/*mytoo1.h*/
#ifndef _MYTOOL1_H
#define _MYTOOL1_H
void mytool1_print(char *print_str);
#endif
/*mytool1.c*/
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s
",print_str);
}
/*mytool2.h*/
#ifndef _MYTOOL2_H
#define _MYTOOL2_H
void mytool2_print(char *print_str);
#endif
/*mytool2.c*/
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s
",print_str);
}
우 리 는 이 프로그램 을 이렇게 컴 파일 할 수 있다.
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o myprint main.o mytool1.o mytool2.o
이렇게 한 후에 명령 ". / my print" 만 실행 하면 이 프로그램 을 간단하게 실행 할 수 있 습 니 다.
그러나 우리 가 그 중의 한 파일 을 수정 한 후에 도 위의 컴 파일 명령 을 지루 하지 않 게 입력 해 야 합 니까?
이 문 제 를 해결 하기 위해 서, 우 리 는 해결 할 좋 은 방법 이 있 습 니 다. 그것 은 Makefile 파일 을 만 들 고, make 명령 으로 위의 프로그램 을 컴 파일 하 는 것 입 니 다.
명령 "vim Makefile" 실행
다음 코드 를 작성 합 니 다:
main: main.o mytool1.o mytool2.o
[Tab]gcc -o myprint main.o mytool1.o mytool2.o
main.o: main.c mytool1.h mytool2.h
[Tab]gcc -c main.c
mytool1.o: mytool1.c mytool1.h
[Tab]gcc -c mytool1.c
mytool2.o: mytool2.c mytool2.h
[Tab]gcc -c mytool2.c
저장 후 명령 "make - f Makefile" 실행
이렇게 하면 실행 가능 한 프로그램 을 만 들 수 있다.
이 Makefile 파일 이 있 으 면 우리 가 어디 를 수정 하 든 이 파일 을 만 들 면 실행 가능 한 파일 을 쉽게 만 들 수 있 습 니 다.
Makefile 에서 \ # 시작 하 는 행동 설명 줄 입 니 다. 이 파일 의 일반적인 형식 은 다음 과 같 습 니 다.
(대상): (components 의존 대상)
[탭 탭 탭 버튼] (rule 규칙)
첫 번 째 행동 의존 관계, 예 를 들 어 위의 Makefile 파일 의 첫 번 째 줄, 우리 의 목표 main 의 의존 대상 은 main. o, my tool 1. o 와 my tool 2. o 입 니 다.
두 번 째 행동 은 규칙 을 실행 합 니 다. 의존 하 는 대상 이 대상 이 수정 한 후에 수정 하면 규칙 이라는 줄 이 지정 한 명령 을 실행 해 야 합 니 다. 이 줄 의 시작 은 Tab 키 여야 합 니 다.
위의 make 에 있 는 - f 인 자 는 Makefile 이라는 파일 을 찾 아 make 를 진행 하 는 것 을 표시 합 니 다. make 는 Makefile 이나 Makefiile 두 파일 만 자동 으로 식별 할 수 있 기 때 문 입 니 다. 컴 파일 된 경우.
Makefile 파일 이름 이 my makefile 이면 - f 인 자 를 추가 해 야 합 니 다. 그렇지 않 으 면 make 에서 지정 한 my makefile 파일 을 찾 을 수 없습니다.
그 밖 에 Makefile 에는 세 가지 유용 한 변수 가 있 습 니 다. $@ (대상 파일), $^ (모든 의존 파일) 과 $< (첫 번 째 의존 파일)
이 세 개의 변 수 를 사용 하면 Makefile 파일 을 다음 과 같이 간소화 할 수 있 습 니 다.
main: main.o mytool1.o mytool2.o
[Tab]gcc -o $@ $^
main.o: main.c mytool1.h mytool2.h
[Tab]gcc -c $<
mytool1.o: mytool1.c mytool1.h
[Tab]gcc -c $<
mytool2.o: mytool2.c mytool2.h
[Tab]gcc -c $<
마지막 으로 여러분 들 이 이미 알 아 보 셨 을 거 라 고 믿 습 니 다. 사실 Makefile 의 파일 은 재 귀적 인 과정 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.