SCV/OS 를 분석하는 첫 번째 문서로서 컴파일과 관련한 환경 설정에 대해서 알아본다.
디렉토리 구조
#ls apps Config.in hal io language release service bootloader error include kernel Makefile Rules.mak tool
디렉토리 구조는 다음과 같다.
이름 | 설명 |
apps | 사용자 애플리케이션 코드 |
bootloader | 부트로더 코드 |
docs | 사용자 메뉴얼문서 |
kernel | 커널 코드 |
hal | CPU CORE 에 관련한 코드 |
dev | 디바이스 드라이버 코드(serial, flash, lcd etc) |
error | 에러처리 관련한 코드 |
release | 최종적인 커널 이미지가 생성되는 디렉토리 |
tool | 컴파일을 하는데 필요한 ncurse 코드 |
language | 기존의 언어에서 구현된 함수 중에 필요한 코드 |
service | 서비스(메모리 할당 etc) 관련 코드 |
파일은 다음과 같다.
이름 | 설명 |
Config.in | menuconfig 실행시 필요한 메뉴 구성 파일 |
Makefile | 컴파일 시 사용 |
Rules.mak | Makefile 에서 include 함 |
컴파일 모드
기본적으로 'make menuconfig' 를 이용해서 필요한 커널 모듈을 선택하면 해당하는 파일이 컴파일 되는 구조를 가지고 있다.
그 외에도 여러가지 컴파일 방법을 지원한다.
명령어 | 설명 |
menuconfig | ncurse 기반의 컴파일 설정 |
config | 각 항목을 일일이 입력 선택하는 컴파일 설정 |
oldconfig | .config 파일을 읽어들여 컴파일 설정 |
randconfig | 모든 항목을 랜덤하게 선택하여 컴파일 설정 |
defconfig | 기본적(default)으로 제공하는 .defconfig 파일을 읽어들여 컴파일 설정 |
allyesconfig | 모든 항목을 yes 로 선택하여 컴파일 설정 |
allnoconfig | 모든 항목을 no 로 선택하여 컴파일 설정 |
clean | 오브젝트 파일(.o, .bin) 과 커널 이미지를 삭제 |
allclean | clean 을 포함하고, ncurse 관련(mconf, conf) 오브젝트 파일 삭제 |
tags | tags 파일 생성 |