일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #IntelManual
- KASAN
- libtins
- 오버워치 세이버메트릭스
- #Best of the Best #OS #MINT64 #Sqix
- FTZ 레벨2
- libpcap
- Sqix
- >
- Network
- 인터럽트
- ftz
- 오버워치
- #
- #MINT64 #Sqix
- vi 외부 명령어
- command
- Find
- Overwatch League SaberMetrics
- #Qt Creator
- vim
- C++11
- vi
- linux
- BEST of the BEST
- #IntelManual #segment Descriptor #세그먼트 디스크립터 #MINT64 #Sqix
- Today
- Total
Sqix
64bit 멀티코어 OS 제작하기 [1] : 환경 설정 본문
한승훈 저자님의 "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장은 모두 끝입니다. 환경 설정 하는 것만 해도, 생각보다 어려워서 꽤 오래 걸린 듯 합니다.
'MINT64 OS ' 카테고리의 다른 글
64bit 멀티코어 OS 제작하기 [3] - 3 : 부트로더 화면 제어 (0) | 2018.05.14 |
---|---|
64bit 멀티코어 OS 제작하기 [3] - 2 : 가장 기초적인 부트 로더 제작 (0) | 2018.05.14 |
64bit 멀티코어 OS 제작하기 [3] - 1 : 부트로더와 makefile (0) | 2018.05.14 |
64bit 멀티코어 OS 제작하기 [2] - 2 : 메모리 관리 기법 (0) | 2018.05.10 |
64bit 멀티코어 OS 제작하기 [2] - 1 : 운영 모드와 레지스터 (0) | 2018.05.08 |