본문 바로가기

gcc4

VPATH make 를 사용하여 컴파일 할 때 object파일들을 특정 폴더에 생성하도록 하고 싶은 경우 VPATH를 사용하면 쉽게 makefile를 구현 할 수 있다. 예를 들면 src 폴더에는 소스만 inc 풀더는 헤더 파일이 있고 컴파일 된 오브젝트 파일들을 obj 폴더에 넣고 싶은 경우 다음과 같이 makefile를 만들어 주면 된다. CC=arm-none-eabi-gcc OUT_DIR = ./obj SRC_DIR=./src INC_DIR=./inc VPATH = $(SRC_DIR) CFLAGS = -I./inc SRCS=$(wildcard $(SRC_DIR)/*.c ) OBJS=$(patsubst %.c, %.o, $(notdir $(SRCS))) OUT_OBJS = $(patsubst %, $(OUT_D.. 2010. 7. 6.
section GCC 링크 스크립트에서 코드나 데이터의 메모리상의 위치를 section 이름을 사용하여 정의 한다. 어셈블리 코드에서는 section를 이름 뒤에 콜론(:)를 붙여 간단하게 정의 할 수 있다. 그러면 c언어내에서도 section를 정의 할 수 있지 않을까? 다음과 같이 attribute를 사용하여 정의 할 수 있다. __attribute__((__section__(".my_buffer"))) static int MyBuffer[0x10000]; 링크 스크립트를 다음과 같이 작성 했다면 MyBuffer를 sram 메모리에 위치 시킬 수 있다. MEMORY { sram : ORIGIN = 0x300000, LENGTH = 16K sdram : ORIGIN = 0x20000000, LENGTH = 64M }.. 2010. 7. 2.
어셈블러 확장자 GCC에서 어셈블 코드의 파일 확장자는 s이다. 그런데 소문자 s와 대문자 S는 컴파일러에서 다르게 인식한다. 대문자 S파일의 확장자는 어셈블리 하기 전에 C 컴파일러를 거친 후에 어셈블리를 한다. 그러므로 대문자 확장자를 사용하면 소문자 s확장자 파일에서 사용할 수 없는 매크로같은 것 들을 사용 할 수 있다. 2010. 7. 1.
GCC 컴파일 환경 ADS 컴파일러를 사용하는 E Project의 컴파일러를 GCC로 변경하는 작업을 하였다. ADS 컴파일러는 구입을 해야 하지만 GCC는 공짜라서... 일단 기존 Makefile의 컴파일 옵션을 수정하고 문법이 맞지 않는 부분은 매크로를 정의 해서 구분 하였다. 2010. 5. 14.