반응형

실습 환경 : 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 파일을 삭제




반응형
,