Sqix

64bit 멀티코어 OS 제작하기 [1] : 환경 설정 본문

MINT64 OS

64bit 멀티코어 OS 제작하기 [1] : 환경 설정

Sqix_ow 2018. 5. 7. 21:42

한승훈 저자님의 "64bit 멀티코어 OS 원리와 구조" 책 스터디를 시작하였습니다.

사실 pr0gr4m님(https://github.com/pr0gr4m)께서 시작하신 os 스터디에 참여하였었지만,
모종의 이유로 약 4개월간 바빴던지라 이제서야 다시 시작하게 되었습니다.


해당 카테고리에서는 해당 책을 공부해나가는 과정에 대해서 작성하고자 합니다.


이번 글에서는 환경 설정에 대해 다룹니다.


※ 개발 환경


운영체제 : Ubuntu 16.04.2 LTS 

텍스트 에디터 : vim


1. GCC 및 gcc-multilib 설치


저처럼 Host OS가 우분투라면, gcc와 g++은 기본적으로 설치가 되어 있기 때문에 굳이 추가적으로 gcc를 설치하실 필요는 없습니다. 하지만, 크로스 컴파일링을 위해서 gcc-multilib, g++-multilib 및 크로스 컴파일을 위한 패키지들을 설치하셔야 합니다.


필수적으로 설치하셔야 하는 패키지는 다음과 같습니다.


# GNU binutils : 여러 종류의 오브젝트 파일들을 핸들링하기 위한 바이너리들입니다. 주로 make, gcc, gdb 등과 함께 사용됩니다.

# GNU bison : Parser의 일종으로, LALR로 이루어진 문법을 해석하여 C 코드로 작성하여 줍니다.

# GNU flex : lex(구문 분석기)의 향상된 버전으로(fast lex), bison과 함께 구문 분석을 위해 사용됩니다.

# gcc-multilib : C의 크로스 컴파일을 위해 설치합니다.

# g++-multilib : C++의 크로스 컴파일을 위해 설치합니다.

# libc6-dev : libiconv(인코딩 변환 라이브러리)를 사용하기 위해 설치합니다.

# libtool : Portable library를 만들기 위한 도구입니다.

# make : 프로그램 그룹 유지를 위한 유틸리티로, 새롭게 컴파일되어야 하는 부분을 판단하여 gcc를 이용해 재컴파일합니다.

# patchutils : 패치 파일을 핸들링하기 위한 유틸리티입니다.

# libgmp-dev : GNU MP 라이브러리를 사용하기 위해 설치합니다.

# libmpfr-dev : MPFR 라이브러리를 사용하기 위해 설치합니다.

# libmpc-dev : MPC 라이브러리를 사용하기 위해 설치합니다.


최종적으로 쉘에는 다음과 같은 명령어를 입력합니다.


# sudo apt-get update

# sudo apt-get upgrade

# sudo apt-get install gcc-multilib g++-multilib binutils bison flex libc6-dev libtool make patchutils libgmp-dev libmpfr-dev libmpc-dev


패키지와 gcc, g++ 크로스 컴파일링 라이브러리가 모두 설치되었다면, 간단한 프로그램을 컴파일해서 테스트해봅니다.


[test.cpp]


#include <iostream>


int main(int argv, char **argc)

{
        std::cout << "Hello World!\n";

  return 0;

}


[bash]

# g++ -m32 -o test32 test.cpp

# g++ -m64 -o test64 test.cpp


2. NASM 설치


어셈블리 빌드를 위해서 nasm을 설치합니다.


# sudo apt-get install nasm


3. QEMU 설치


Emulator를 이용하기 위해서 QEMU를 설치합니다.


# sudo apt-get install qemu-kvm


여기까지 오셨다면 1,2장은 모두 끝입니다. 환경 설정 하는 것만 해도, 생각보다 어려워서 꽤 오래 걸린 듯 합니다.

Comments