반응형

후하~ 드디어 처음으로 책의 2장 개발 환경 구성 부분을 시작했는데 역시... 개발 환경 구축부터 진이 빠지더라 :(

 

다행스럽게도 성공적으로 BinutilsGCC 생성까지 완료했다!

 

원래 일요일부터 공부를 시작하려고 했지만... 그래도 일주일에 쉬는 시간으로 하루 정도는 휴식을 줘도 괜찮지 않을까 싶어서 일요일은 나만의 시간을 보내며 날려버렸다 히힣ㅎ

 

그리고 월요일이 되자 월요병이 걸렸고 ㅡ.ㅡ

 

그렇게 나는 "아~ 오늘은 그냥 패스 하고 자고 일어나서 내일 할까?" 라는 생각이 머리 속을 가득 가득 채웠지만!

 

잘 이겨내고 밤에 시간을 내어 LG 그램 windows10에 cygwin(시그윈)을 설치하고... 패키지를 설치하고.... 설치하는 걸 기다리고.... 기다리고... 기다리고.... 그리고 마침내 패키지 완료가 다 되었는데

 

그 때 깨달았다.

 

나는 왜 내 소중한 LG 그램에... 그것도 이제 38.8GB 밖에 남지 않은 내 LG 그램에 설치를 하고 있는 것인가.... 하아~

 

그래서 얼른 MacBook pro로 옮겼고 VBox를 쓸까 Parallels를 쓸까 고민하다가 선택하였다!

 

답은 : Parallels

 

솔직히 가상 머신의 저장 경로를 외장 SSD로 할 것이기 때문에 아무거나 해도 상관 없지만

 

윈도우에서도 하고 맥에서도 하고 아무대서나 작업하기 편한 VBox로 하려다가 그냥 MacBook pro에서만 하려고 Parallels를 선택했고!

 

운영체제는 당연히 리눅스를 사랑하기 때문에 리눅스로 진행할 것이지만 :)

 

그래도 블로그에 포스팅 할 걸 생각하니 "윈도우에서의 환경 구성부터 해야지 ㅜ.ㅜ" 라는 생각이 SSG 지나갔다 :(

 

그래서 내 MacBook Pro의 Parallels에 Windows 10 64bit를 올렸다.

 

내가 공부할 서적은 10년정도 된 자료이고... 그 때 상황을 감안해보면 windows xp나 windows 7인데

 

나는 최신 버전으로 해보고 싶었다.

 

앞으로 얼마나 더 삽질을 하고 버전 때문에 막히고 할 지 몰라 대책 방안으로 windows 7과 windows10 각각 32bit와 64bit iso를 모두 구해놨다.

 

아 근데 어차피 리눅스로 작업할건데 왜 구했을까 ;;;;

 

그래도 뭐... 언젠간 쓸 iso 파일이지 않을까...

 

여튼! 이렇게 운영 체제를 선택하고 부팅 후 맨 처음으로 cygwin을 설치했다.

 

cygwin윈도우 환경에서 리눅스와 같은 환경을 제공해주는 프로그램이다.

 

실제 설치한 후 실행해보니 리눅스의 터미널과 같았다!

 

cygwin을 통해 OS 개발에 필요한 패키지들을 다운로드 해야한다. 

(GCC, 기타 유틸리티, 소스코드)

 

★ 앗! 주의할 점은! 패키지 버전 뒤에 (test)가 적혀있거나 +1g12f1tg1 이런식으로 이상한 게 붙은 거는

 

개발 공부하는 학생의 직감으로 제외시킨 후 나머지 버전들 중 최신으로 설치하였다. 

 

그리고 물론 리눅스에서 작업할 때는 cygwin을 사용할 필요가 없다!

 

그래서 나는 포스팅 이후 리눅스로 옮길 것이다 하하하하

 

자, 이제 cygwin을 통해 패키지들을 다운 받는다.

(진짜 마우스 클릭하는 거 귀찮아 뒈져버릴 뻔 했다.)

 

어떤 패키지들을 다운로드 했는지 확인하려면 64비트 멀티구조 OS 카테고리의 글들을 확인해보면 된다.

 

어차피 모든 설치 매뉴얼은 위의 카테고리에서 설명할 것입네다. :)

 

이제 마지막으로 환경 변수를 변경해줌으로써 cygwin 설치는 완료되었다!

 

그리고 서적에서는 gcc가 잘 설치되었는지 확인하라 하는데 10년 전 자료이다!

 

게다가 난 윈도우 부팅 후 gcc를 설치한 적이 없다!

(뭐... cygwin에서 설치하긴 했지만 cmd에서 안된다... 안되는 게 당연할거다..(?))

 

그래서 바로 크로스 컴파일러 만들기를 진행한다.

 

크로스 컴파일이라~ 무엇인고~ 하니!

 

 

(책에서는)"자신이 실행되는 플랫폼이 아닌 다른 플랫폼에서 동작하는 실행 파일을 생성하는 컴파일러" 라고 한다?

 

음~ 쉽게 말해 맥 os에서 윈도우용 실행 파일을 생성할 수 있는 것인가 보다!

 

좋은거니 만들도록 한다! 훟

 

먼저, GCC 소스 코드를 이용해서 크로스 컴파일러를 만들려면 binutils를 생성해야 한다.

 

binutils바이너리와 관련된 유틸리티들의 집합인데, 컴파일 과정을 거쳐 생성된 오브젝트 파일을 링크하여 실행파이나 라이브러리 파일을 생성할 때 사용한다.

 

GCC오브젝트 파일을 링크할 때 binutils 라는 것을 이용하나보다!

 

그러면 또 좋은 것이 아닌가? 당연히 생성하도록 한다.

 

근데 책은 오래되었다는 점이 살~~짝 신뢰가 가질 않는다.....

 

그래서 인터넷을 뒤져서 찾았던 github.com/kkamagui/mint64os-examples 사이트를 이용한다!

 

한승훈 님이 그나마 최신의 글로 업데이트 해둔 것이다.

 

이걸 따라 binutils를 빌드하기 시작했는데... 시간은 이미 새벽.... 너무너무너무 피곤한 시간이다!

 

그래도 이상하게 빌드되는 과정을 보고 있자니 막 잠재되어 있던 나의 아드레날린이 솟구쳐 오르더라

 

그래서 나의 아드레날린을 진정시켜주지 않고 소리를 지를까 하다가 생각해보니.... 지금은 새벽... 소리 지르면 바로 싸움난다!

 

anyway! 빌드 과정을 보면서 멍 때리고 있는데, 새벽 2시 34분 화면이 멈췄길래 봤더니

 

와~ 너모나도 보고 싶지 않던 에러가 발생했다 ㅋㅎㅋㅎㅋㅎㅋㅎㅋㅎ

 

그래서 어떻게 했냐면 그냥 그 상태로 두고 자러 갔다... ㅎㅎㅎㅎㅎㅎ

 

그 다음 화요일!

 

드디어 오늘 성공했다!

 

binutilsgcc 둘 다 말이다!

 

성공한 과정은 이러하다

 

어디서 잘못된 건지 거의 하루 반나절의 반나절을 쏟았다.

 

그리고 인터넷을 뒤져보았다.

 

한승훈 님의 min64 os 사이트yummyhit 형의 블로그며 다른 구글 search 결과까지

 

그리고 찾은 답은 binutils 소스 코드cygwin에서 받지 않고 공식 사이트에서 받는 것이다.

 

binutils의 바이너리 파일은 cygwin에서 받되, 소스 코드는 다운로드 한 바이너리 파일의 버전과 맞춰 http://ftp.gnu.org/gnu/binutils 에서 받아주면 된다.

 

근데 binutils 소스 코드를 /usr/src 디렉토리 밑에 다운로드해야 한다.

 

그래서 wget 명령어로 "wget http://ftp.gnu.org/gnu/bintuils/binutils-버전-.tar.gz이렇게 입력하여 다운로드 하면 된다.

 

자 그럼 이제 압축을 풀고 다시 최근 업데이트 된 한승훈 님의 github를 참고하며 진행한다.

 

솔직히 말자면 blog.int80.kr/53 이 블로그 글도 같이 참고해서 성공했다....

 

자! 여튼 그럼 이제 성공적으로 binutils가 생성이 됐을 것이다!

 

그 다음은 GCC이다... 와 이놈 진짜.... 빌드 시작하고 롤 한 판 해도 되겠더라 ㅋㅎㅋㅎㅋㅎㅋㅎㅎㅋㅎㅋ

 

GCCcygwin에서 받은 소스 코드로 바로 진행해도 된다.

 

★ 에러 없이 잘 동작했다. ★

 

뭐.... GCC 테스트에서 32bit로 동작하게 해주는 -m32 옵션을 적용하면 에러가 뚜르르르를 뜨긴 하지만!

 

한승훈 님께 직접 연락해서 확인한 결과 

 

Dumpspec에서 "m64/m32"가 출력되면 정상적으로 완료된 것이다!

 

여기까지 해서 binutilsGCC 생성이 완료되었다 ㅠ

 

진짜 독학을 하면서 제일 빡췰 때가 있는데 에러가 났을 때다!

 

한편으로는 에러가 발생하면 이상하게 아드레날린이 솟는다...

 

에러를 해결했을 때의 그 성취감.... 내가 공부하는 원동력 중에 하나이지 않을까...(절대 변ㅌㅐ는 아니다!)

 

그래도 해결하고 나면 이렇게 블로그도 쓸 게 생기고 좋은 거다!

 

자 이제 다음 파트로 넘어가야 하는데 좀 바빠서 2틀 뒤에나 할 수 있지 않을까 싶은데... 잠 자는 시간을 쪼갤까....

 

후 일단 블로깅은 여기까지만 하도록 한다!

 

윈도우에 환경 구성은 64비트 멀티코어 OS 카테고리에 따로 정리하도록 하겠다!

반응형

+ Recent posts