기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

Makefile

 

all:test

CC = arm-linux-gcc

CFLAGS += -Wall -lpthread

OBJS = test1.o

OBJS += test2.o

test:$(OBJS)

       $(CC) -o $@ $^ $(CFLAGS)

clean :

       rm -f $(OBJS) test

 

이렇게 구성이 되어 있는데요

스크립트가 위에서부터 아래로 실행되기때문에

all:test에서 test:$(OBJS)로 이동하여 두개의 c파일을 옵션의 설정에 맞게 컴파일 하게 됩니다

두개의 파일이 컴파일될때 test1.c 부터 컴파일이 되는게 맞는거죠?(위에서 아래로)

 

두개가 순차적으로 컴파일될때 $@에 의해서 test1.c가 컴파일되면서 test가 만들어지고

test2.c가 컴파일될때도 test가 만들어지는데 +=에 의해서 합쳐지는건가요?

 

 test:$(OBJS)에 의해서 두개의 .o 파일을 만들고 링킹과정을 거쳐서 최종실행 파일인 test가 생성된다

옵션에서 -lpthread가 있는것은 두 소스파일이 pthread를 사용하기때문에 옵션으로 넣어준것이다

 

전체 해석한 부분이 맞는건가요?

 

  $(CC) -o $@ $^ $(CFLAGS)   <--- 풀어서 쓰면

arm-linux-gcc -o test test1.o test2.o  -Wall -lpthread 이렇게 되는건가요?


유형목

2013.10.21 05:32:19
*.131.98.177

일단 아래의 링크를 참고하시고..

http://www.viper.pe.kr/docs/make-ko/make-ko_10.html#SEC97


해석하신 부분은 맞습니다. 다만..

*.c -> *.o 로 컴파일해주는 (확장자 규칙이라고 일컬어지는)내용이 빠져 있는듯 싶기도 합니다.

아니면 다른 Makefile에서 이미 *.c -> *.o 를 처리했을지도.

쭈암

2013.10.22 08:21:26
*.131.225.178

GNU make 인가요?


GNU make라면 기본룰로 .c->.o 룰이 들어 있습니다.

하지만 위 Makefile은 LDFLAGS에 있어야 할 내용을 CFLAGS에 적어두는 요상한 짓을 해놨네요.

CFLAGS : cc 돌릴 때 쓰는거

LDFLAGS : ld(linker)플래그 ( 보통 gcc가 알아서 ld불러서 링크하죠.. ) 마지막 바이너리 생성할때는 LDFLAGS로 해줘야 합니다. 라이브러리 지정 (-l , -L 옵션들 )같은 거는 말이죠.



List of Articles
번호 제목 글쓴이 날짜 조회 수
5948 화웨이 3G Modem을 Jellybean에 사용 해보신 분 계신가요?? [2] 천동이 2013-11-05 1809
5947 부팅시 disk image starting at 0. 나오고 부팅이 멈추는데요 [1] biokk 2013-11-04 3200
5946 SquashFS 마운트 에러 질문입니다. [3] 강해야산다 2013-10-31 2215
5945 pthread 소스 루틴이 이해가 잘안되는데요(소스참조) [8] biokk 2013-10-30 1992
5944 라즈베리파이나 cubox의 1080p 동영상 재생 [3] eou4 2013-10-29 2592
5943 arndale jb-mr1 es6 와이파이 문제 질문요. [7] 고로다 2013-10-22 3759
5942 Exynos5410 ISP 제어 관련 질문입니다 [1] 선수 2013-10-21 4030
5941 램디스크의 사이즈를 12k, 8k로 생성할때의 차이점 [1] pedor11 2013-10-21 1777
5940 3G Modem 간혈적 응답 없는 경우. 천동이 2013-10-21 1489
5939 Driver와 APP간의 통신 [1] 테크 2013-10-19 1779
» Makefile 해석 맞는건지. [2] ice179 2013-10-18 1732
5937 2xI2C가 무엇을 뜻하나요? [2] biokk 2013-10-17 1531
5936 오실로스코프 사양 결정 [6] 오르다 2013-10-16 1997
5935 Exynos4412 MFC 관련 문의 [3] 한태창 2013-10-15 2035
5934 linux 에서 MAC 붙이는 code 는 어디에? [2] woox 2013-10-12 1673
5933 Kconfig 설정 질문인데요 [3] pedor11 2013-10-10 2102
5932 arndale보드에서 arndale-jb_mr1-es3로 부팅이 되지 않습니다. [15] 김영준 2013-10-09 3781
5931 비실시간 스케쥴링 관련 질문 드립니다. tezboy 2013-10-08 1658
5930 make menuconfig 설정시 ./config , ./include/linux/autoconf.h 어떤... [2] ice179 2013-10-08 1915
5929 (ndk를 이용한 native code 실행속도) PC와 Android에서의 실행속... [1] 혼자서기 2013-10-08 2134

사용자 로그인