Makefile 학습 1
gcc 컴 파일 과정:
(1) 전처리: test. i 파일 생 성
# cpp test.c-o test.i //혹은
# cpp test.c > test.i //혹은
# gcc -E test.c -o test.i
(2) 컴 파일: test. s 파일 생 성
# gcc -S test.i
(3) 어 셈 블 리: test. o 파일 생 성
# as -o test.o test.s //혹은
# gcc -c test.s -o test.o
(4) 링크: 실행 가능 한 파일 생 성 test
# gcc -o test test.o
예:
##
gcc -E test.c -o test.i #
gcc -S test.i -o test.s #
gcc -c test.s -o test.o #
gcc -o test test.o #link
Makefile 의 첫 번 째 예:
main. c 의 코드:
#include <stdio.h>
#include <stdlib.h>
#include "print.h"
#include "computer.h"
int main()
{
print("xxxx");
printf("%d
", ret_add(1, 2));
return 0;
}
print. h 코드:
#include <stdio.h>
void print(const char *str);
print. c 의 코드:
#include "print.h"
void print(const char *str)
{
if (str == NULL)
{
printf("Empty String
");
}
else
{
printf("%s
", str);
}
}
computer. h 코드:
int ret_add(int a, int b);
computer. c 의 코드:
#include "computer.h"
int ret_add(int a, int b)
{
return a+b;
}
main. c 를 Makefile 로 컴 파일 합 니 다:
main : main.o print.o computer.o
gcc -o main main.o print.o computer.o
main.o : main.c print.h computer.h
gcc -c main.c
print.o : print.c print.h
gcc -c print.c
computer.o : computer.c computer.h
gcc -c computer.c
명령 make - f mymakename
주의 하 세 요. 가끔 다음 과 같은 실 수 를 보고 할 수 있 습 니 다.
makefile:11: *** 。 .
이것 은 gcc 명령 이 TAB 로 시작 되 기 때문에 모든 gcc 명령 전에 TAB 키 를 추가 해 야 합 니 다.
이상 ":" 왼쪽 은 모두 목표 파일 이 라 고 부 릅 니 다. copter. o print. o main. o main 은 모두 목표 파일 이지 만 하나의 Makefile 은 하나의 최종 목표 파일 만 있 습 니 다. 다른 목표 파일 은 모두 이 최종 목 표를 위해 서 비 스 를 제공 합 니 다. main 은 최종 목표 이 고 다른 목 표 는 최종 목표 main 또는 main 은 다른 목표 에 의존 합 니 다.
":" 오른쪽 은 왼쪽 목 표를 만 들 기 위해 의존 해 야 할 파일 입 니 다. copter. o 의 생 성 은 예비 copter. c copter. h 에 의존 합 니 다. main. o 의 생 성 은 main. c print. h 에 의존 합 니 다. couputer. h 등
유용 한 변수 들:
$@ 대상 파일 입 니 다. 예 를 들 어 computer. o print. o main. o main
$^ 모든 의존 파일. 예 를 들 어 main. o 의 모든 의존 파일 은 main. c print. h 입 니 다. couputer.h
$< 모든 의존 파일 의 첫 번 째 파일 입 니 다. 예 를 들 어 main. o 가 의존 하 는 첫 번 째 파일 은 main. c 입 니 다.
그래서 Makefile 은 이렇게 쓸 수 있 습 니 다.
main : main.o print.o computer.o
gcc -o $@ $^
main.o : main.c print.h computer.h
gcc -c $<
print.o : print.c print.h
gcc -c $<
computer.o : computer.o computer.h
gcc -c $<
자동 푸 시 메커니즘
makefile:
main : main.o print.o
computer.o
gcc -o main main.o print.o computer.o
main.o : print.h computer.h
print.o : print.h
computer.o : computer.h
make 는 대상 파일 에 따라 필요 한 c (. h?) 파일 로 자동 으로 밀어 내 고 gcc 를 호출 하여 컴 파일 합 니 다. print. o 라 는 목표 보다 make 는 copter. c 라 는 파일 이 필요 하고 gcc 로 컴 파일 해 야 한 다 는 것 을 알 고 있 습 니 다.
사용 변수
makefile
objects = main.o
print.o computer.o
main : $(objects)
gcc -o main $(objects)
main.o : main.c print.h computer.h
gcc -c main.c
print.o : print.c print.h
gcc -c print.c
computer.o : computer.c computer.h
gcc -c computer.c
.PHONY: clean
clean:
-rm main $(objects)
makefile 에 서 는 변 수 를 사용 할 수 있 습 니 다. 예 를 들 어 변 수 를 사용 하여 대상 파일 을 저장 할 수 있 습 니 다. < / p >
변 수 를 사용 하 는 장점 은 변 수의 값 을 수정 할 수 있 습 니 다. 예 를 들 어 하나의 변 수 를 depend = main. c print. h copt. h 로 정의 하여 main. o 의 의존 항목 을 저장 할 수 있 습 니 다. main. o 의 의존 항목 이 증가 하거나 감소 할 때 depend 라 는 변수 만 수정 하면 됩 니 다.
예 를 들 어 우 리 는 파일 create. h 를 추가 합 니 다. 우 리 는 depend 이후 에 이 파일 이름 을 추가 하면 됩 니 다. 이것 은 큰 프로젝트 에서 시간 을 절약 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.