본문 바로가기
공부,일/atmega328P

스케치 파일 컴파일러

by fromnothing1 2021. 10. 6.

avr-gcc 위치

아두이노 설치한 위치에서 

ARDUINO\arduino-1.8.15\hardware\tools\avr\bin

 

bin 파일 안에 make 가 없어서  make 넣어주고 makefile 을 실행한다.  폴더에 넣어둔 main.c 가 컴파일 되면서  

컴파일 중간단계 파일이 모두 생성된다. 

 

이는  makefile 의 --save-temps 속성을 추가하면 생성해 준다. 

makefile
0.01MB
make.exe
0.21MB

 

 

간단한 makefile 분석

 

# Debugging format.
#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
#     AVR Studio 4.10 requires dwarf-2.
#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
DEBUG = dwarf-2

디버깅 포멧을 알려주는 옵션 , bin ,hex elf 처럼 여러가지 파일 포멧이 존재 하는데 그중에서 dwarf 형태의 포멧을 디폴트 값으로 하고 있다.

 

#---------------- Library Options ----------------
# Minimalistic printf version
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min

# Floating point printf version (requires MATH_LIB = -lm below)
# atmega의 경우 실수를 처리하는 전용회로가 없어서 전용 라이브러리를 추가해서 실수를 처리한다.
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt

# If this is left blank, then it will use the Standard printf version.
PRINTF_LIB =
#PRINTF_LIB = $(PRINTF_LIB_MIN)
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)

# Minimalistic scanf version
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min

# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt

# If this is left blank, then it will use the Standard scanf version.
SCANF_LIB =
#SCANF_LIB = $(SCANF_LIB_MIN)
#SCANF_LIB = $(SCANF_LIB_FLOAT)


MATH_LIB = -lm #수학 라이브러리

링킹 단계에서 사용될 각종 라이브러리를 추가해주고 있다. 링커 실행 파일 이름은 ld 이다.

 

F_CPU = 16000000
# Place -D or -U options here
CDEFS = -DF_CPU=$(F_CPU)UL

-D 옵션은 c 코드에 #define 을 추가해준다. 위의 코드는 #define F_CPU = 16000000UL 전처리문을 추가해주는 부분이다. 이렇게 해주면 atmega c 언어 코딩할때 .h 파일안이나 코드 안에 define 하지 않더라도 make 할때 자동으로 추가 해줄 수 있다. 

https://blog.zakkemble.net/avr-gcc-builds/

 

AVR-GCC 11.1.0 for Windows 32 and 64 bit – Zak's Electronics Blog ~*

AVR-GCC 11.1.0 for Windows 32 and 64 bit This is where I’ll be uploading builds of AVR-GCC for Windows 32 and 64 bit, which will also include Binutils, AVR-LibC, AVRDUDE, Make and GDB. I’ll be trying to keep the builds up to date with the latest tool r

blog.zakkemble.net

 

'공부,일 > atmega328P' 카테고리의 다른 글

timer1 , 1초 깜빡이 코드  (0) 2021.10.05
캐릭터 LCD 프로그래밍  (0) 2021.09.22
my 초음파 센서 만들기  (0) 2021.09.15
atmel studio 에서 printf, scanf 사용  (0) 2021.08.11
atmega328P TWI(I2C) 통신 (3) 실습  (0) 2021.08.07

댓글