실습 환경 : Eclipse
디렉터리 구조는 이렇게 만들었고, 해당 디렉토리별 설명은 위와 같다.
-부트 로더 디렉터리와 대부분 유틸리티 디렉터리는 다른 디렉터리와 달리 소스파일 디렉터리와 임시 파일 디렉터리를 구분하지 않는다
-부트 로더는 어셈블리어 파일 하나로 이루어진 작은 프로그램이므로 굳이 디렉터리를 구분하지 않아도됨
-하지만, 보호모드 커널, IA-32e 커널, 각 응용프로그램은 여러 파일로 복잡하게 구성되므로 혼잡함을 줄이려고 임시 파일 디렉토리를 별도로 생성
make 프로그램
-소스 파일을 이용해서 자동으로 실행 파일 또는 라이브러리 파일을 만들어주는 빌드 관련 유틸리티
-소스 파일과 목적 파일을 비교한 뒤 마지막 빌드 후에 수정된 파일만 선택하여 빌드를 수행하므로 빌드 시간을 크게 줄여준다.
-하지만, make 프로그램이 빌드를 자동으로 수행하려면 각 소스 파일의 의존 관계나 빌드 순서, 빌드 옵션등에 대한 정보가 필요하다. 이러한 내용이 저장된 파일이 바로 'makefile'
~>해당 운영체제는 운영 모드별로 구분된 디렉터리가 최종 빌드 결과물을 최상위 디렉터리로 복사하고, 최상위 디렉터리의 makefile은 이 결과물을 이용해서 최종적으로 OS이미지를 생성하는 방식
~>각각의 하위 디렉터리에 있는 makefile은 해당 디렉터리의 C언어의 파일과 어셈블리 파일을 자동으로 추출함으로써, 효율적인 빌드를 수행하도록 하였다
<make 문법>~> Tab써준 부분에 반드시 Tab을 해줘야 한다.빌드하는 도중에 다른 make를 실행하는 것 도한 가능
Target: Dependency
<tab> Command
<tab> Command
...
-Target
-생성할 파일.특정 레이블을 지정하여 해당 레이블과 관련된 부분만 빌드하는것도 가능
-Dependency
-Target 생성에 필요한 소스 파일이나 오브젝트 파일등을 나타냄.
-Command
-Dependency에 관련된 파일이 수정되면 실행할 명령을 의미
-명령창이나 터미널에서 실행할 명령 또는 프로그램을 기술
최상위 makefile ~> OS 이미지 생성을 위해 각 하위 디렉터리의 makefile을 실행하는 것이 목적
~> 현재는 부트 로더만 존재해서 해당 디렉터리로 이동해서 빌드하고, 빌드한 결과물을 복사하여 OS이미지를 생성하는 것이 전부
다음으로 부트로더 디렉토리의 makefile
~>BootLoader.asm 파일을 nasm 어셈블리어 컴파일러로 빌드하여 BootLoader.bin파일을 생성하는 것이 목적.
~clean Target의 경우 자신의 디렉터리에 있는 BootLoader.bin 파일을 삭제
'과거의 컴퓨터 공부 > 64bit OS 만들기' 카테고리의 다른 글
(5)BIOS 서비스와 소프트웨어 인터럽트 (0) | 2014.03.29 |
---|---|
(4)부팅과 부트로더-3.부트로더의 제작, 테스트 (0) | 2014.03.29 |
(4)부팅과 부트로더-1.이론 (0) | 2014.03.21 |
(3) 운영모드와 메모리 관리 기법-(2) IA-32e모드의 메모리 관리 (0) | 2014.03.21 |
(3) 운영모드와 메모리 관리 기법-(1) 리얼모드,보호모드의 메모리 관리 (0) | 2014.03.20 |