2014.04.13 18:05
     

* Cygwin이 자주 업데이트 되는 바람에 가상머신을 사용해서 개발하실 수 있도록 준비했습니다. 계속해서 빌드에 오류가 생기신다면 http://jsandroidapp.cafe24.com/xe/8920 에 가셔서 가상머신을 사용하시기 바랍니다. ^^  

* 2014년 4월 13일자 Cygwin을 기준으로 내용이 업데이트 되었습니다 ^^

* 빌드에 문제가 생기거나 정상적으로 동작하지 않는다면, MINT64 OS 개발용 가상머신을 이용하세요 ^^

    가상머신 이미지 다운로드: http://jsandroidapp.cafe24.com/xe/8920

* 관련 내용은 64비트 멀티코어 OS 원리와 구조 QnA 사이트(www.mint64os.pe.kr)에서 계속 업데이트 되고 있습니다. ^^


제 책 "64비트 멀티코어 OS 원리와 구조" 가 나온지도 벌써 3년이 지났습니다. ^^;;; 책이 출간됨과 동시에 가장 많이 질문을 받는 것이 OS 제작을 위한 환경 구축 방법인데요...

얼마전부터 환경 구축에 어려움을 겪는 분들이 많아지셔서 Cygwin 최신 버전을 다운 받아서 빌드를 해봤습니다. ^^;;; 실제로 빌드를 진행하다보니 몇 가지 변경점이 보이더군요. ㅠㅠ 그래서 그 내용을 여기다가 정리해놓습니다. ㅠㅠ

<출처 - yes24.com>

ps1) 혹시 아래대로 수행했는데 빌드에 문제가 생기거나 정상적으로 동작하지 않는다면, 곧 업로드될 MINT64 OS 개발용 가상머신을 이용하세요 ^^ ps2) 안타깝게도 Cygwin에 덮어쓰는 방법은 이제 더이상 동작하지 않습니다.


Cross Compiler를 만들려면 먼저 Cygwin 사이트(http://www.cygwin.com/install.html)로 이동해서 32비트 Cygwin Installer를 다운로드 받습니다. Setup.exe 파일을 다운하면 됩니다. ^^;;;

다운로드 후 파일을 실행하면 어떻게 설치할 것이고 패키지 소스는 어디에서 다운 받을 것인지 선택하는 부분이 나오는데, 책에 나와있는 카이스트 사이트(ftp://ftp.kaist.ac.kr)가 더이상 유효하지 않으니 다른 사이트를 선택해야합니다.

우리나라 근처에 있는게 아무래도... 속도도 빠르니 가까운 일본 주소인 ftp://ftp.jaist.ac.jp를 선택하면 됩니다. ^^;;; 패키지 소스를 다운 받을 주소를 선택하고 난 뒤에는 "Select Package" 화면이 나올 때까지 적당히 Next를 선택해주면 됩니다. ^^;;;

"Select Package" 화면이 나오면 아래의 항목들을 설치해줍니다. 책을 쓸 때는 C++ 관련 항목이 없어도 정상적으로 빌드가 되었지만, 지금은 C++ 컴파일러를 설치하지 않으니 configure 중에 오류가 발생하더군요. ㅠㅠ

+Devel
    + binutils - 2.24.51-2 버전, 소스 및 바이너리 모두 설치
    + bison - 2.7.1-1 버전, 바이너리만 설치
    + flex - 2.5.35-1 버전, 바이너리만 설치
    + gcc-core - 4.8.2-2 버전, 소스 및 바이너리 모두 설치
    + gcc-g++ - 4.8.2-2 버전, 바이너리만 설치
    + libiconv - 1.14-2 버전, 바이너리만 설치
    + libtool - 2.4.1 버전, 바이너리만 설치
    + make - 4.0-2 버전, 바이너리만 설치
    + patchutils - 0.3.2-1 버전, 바이너리만 설치
+Libs
    + libgmp-devel - 6.0.0a-1 버전, 바이너리만 설치
    + libmpfr-devel -3.1.2-1 버전, 바이너리만 설치
    + libmpc-devel - 1.0.2-1 버전, 바이너리만 설치
    + libncurses-devel - 5.7-18 버전, 바이너리만 설치

위의 항목이 설치되고 나면 binutils부터 차례대로 빌드를 시작하면 됩니다.

binutils를 빌드하려면 /usr/src 디렉터리 아래에 있는 binutils 디렉터리로 이동해서 다음과 같은 순서로 커맨드를 입력하면 빌드와 설치가 끝납니다.

// 디렉터리 이동 후 아래 작업 수행
$> cd /usr/src/binutils-2.24.51-2   <== 디렉터리 이름은 binutils 버전에 따라 다를 수 있음    
$> export TARGET=x86_64-pc-linux
$> export PREFIX=/usr/cross
$> ./configure --target=$TARGET --prefix=$PREFIX --enable-64-bit-bfd --disable-shared --disable-nls
$> make configure-host
$> make LDFLAGS="-static"
$> make install

아래는 테스트를 위한 부분입니다. 아래처럼 커맨드를 실행했을 때 x86_64 관련 항목이 보이면 제대로 된 것입니다. ^^;;;;

$> /usr/cross/bin/x86_64-pc-linux-ld --help | grep "supported "
/usr/cross/bin/x86_64-pc-linux-ld: supported targets: elf64-x86-64 elf32-i386 a.
out-i386-linux efi-app-ia32 efi-bsdrv-ia32 efi-rtdrv-ia32 efi-app-x86_64 efi-bsd
rv-x86_64 efi-rtdrv-x86_64 elf64-little elf64-big elf32-little elf32-big srec sy
mbolsrec tekhex binary ihex
/usr/cross/bin/x86_64-pc-linux-ld: supported emulations: elf_x86_64 elf_i386 i38
6linux

binutils 빌드 및 설치가 끝났다면 gcc를 cross compile할 차례입니다. gcc는 아래와 같은 순서로 입력하면 빌드와 설치가 완료됩니다. ^^;;;

압축 해제, 파일명은 cygwin에서 다운받은 GCC 버전에 따라서 다를 수 있으니 실제 디렉터리를 확인하여 입력해야 합니다. ^^;;; 아래 패치 파일도 모두 마찬가지 입니다.

$> cd /usr/src
$> tar -xvf gcc-4.8.2.tar.bz2
$> export TARGET=x86_64-pc-linux
$> export PREFIX=/usr/cross
$> export PATH=$PREFIX/bin:$PATH

압축 해제가 끝났으니 소스가 있는 디렉터리 이동 후 나머지 작업 수행합니다.

$> cd /usr/src/gcc-4.8.2    <== 디렉터리 이름은 GCC 버전에 따라 다를 수 있음
$> ./configure --target=$TARGET --prefix=$PREFIX --disable-nls --enable-languages=c --without-headers --disable-shared --enable-multilib
$> make configure-host
$> make all-gcc
$> make install-gcc

빌드가 완료된 후 테스트용입니다. 아래와 같이 입력했을 때 m64가 보이면 정상적으로 설치된 것입니다.

$> /usr/cross/bin/x86_64-pc-linux-gcc -dumpspecs | grep -A1 multilib_options
*multilib_options:
m64/m32
빌드한 크로스 컴파일러는 MINT64 OS를 개발하는데 필요한 최소한의 환경만 구성되어 있습니다. 64비트 관련 gcc 라이브러리 등은 빌드되지 않은 상태이므로, 빌드된 컴파일러로 test.c 파일을 빌드했을 때 발생하는 오류는 무시하셔도 됩니다. ^^

자, 이제 64비트 바이너리를 생성할 수 있는 gcc가 생성되었으니, 즐거운 OS 프로그래밍하세요 ;)

Mittm

Android App

Posted by kkamagui

댓글을 달아 주세요

  1. 2014.04.17 21:55  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. ultract 2014.04.26 09:36 신고  댓글주소  수정/삭제  댓글쓰기

    관리자의 승인을 기다리고 있는 댓글입니다


    :)

  3. KSHMK 2014.07.05 19:42 신고  댓글주소  수정/삭제  댓글쓰기

    안됬는데 감사합니다.

  4. 2014.09.16 01:04  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of http://kkamagui.tistory.com BlogIcon kkamagui 2014.10.09 06:57 신고  댓글주소  수정/삭제

      안녕하세요, 설치하는 데 문제를 겪으시고 계시군요. ㅠㅠ

      http://jsandroidapp.cafe24.com/xe/8920 에 가시면 가상머신을 이용해서 개발할 수 있는 방법 있습니다.

      가상머신을 사용하면 빌드를 따로 하지 않으셔도 되니 작업을 진행하는데 도움이 되실 겁니다. ^^

      그럼 즐거운 OS 프로그래밍하세요 ^^

  5. 2014.10.07 22:58  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of http://kkamagui.tistory.com BlogIcon kkamagui 2014.10.09 06:57 신고  댓글주소  수정/삭제

      안녕하세요, 설치하는 데 문제를 겪으시고 계시군요. ㅠㅠ

      http://jsandroidapp.cafe24.com/xe/8920 에 가시면 가상머신을 이용해서 개발할 수 있는 방법 있습니다.

      가상머신을 사용하면 빌드를 따로 하지 않으셔도 되니 작업을 진행하는데 도움이 되실 겁니다. ^^

      그럼 즐거운 OS 프로그래밍하세요 ^^

  6. 2014.10.07 22:58  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of http://kkamagui.tistory.com BlogIcon kkamagui 2014.10.09 06:58 신고  댓글주소  수정/삭제

      안녕하세요, 설치하는 데 문제를 겪으시고 계시군요. ㅠㅠ

      http://jsandroidapp.cafe24.com/xe/8920 에 가시면 가상머신을 이용해서 개발할 수 있는 방법 있습니다.

      가상머신을 사용하면 빌드를 따로 하지 않으셔도 되니 작업을 진행하는데 도움이 되실 겁니다. ^^

      그럼 즐거운 OS 프로그래밍하세요 ^^

  7. Edward 2014.10.30 05:14 신고  댓글주소  수정/삭제  댓글쓰기

    사실 이건 환경구축 하는 방법을 아는것도 중요한 부분이긴 한데
    주목적은 OS개발 방법론이니 좀더 좋은 방법이 있지 않을까 ?

    일반적으론 툴체인(toolchain)이라고 하는데 그런것들은 cygwin 이건 뭐건
    지속적으로 버전업이 되고 tool 간의 버전이 안맞으면 전혀다른 결과를
    링킹이나 컴파일 과정에서 내버릴수도 있으니까

    사용했던 toolchain 이나 vmimage 같은걸 묶어서 torrent 나 zip 으로 어딘가에 올려두고
    그걸 활용하게 하면 좀더 쉽게 이용자들이 활용할 수 있을지도 ~

    라고 morris 가 알려줬음.

    • Favicon of http://kkamagui.tistory.com BlogIcon kkamagui 2014.11.02 12:47 신고  댓글주소  수정/삭제

      앗~ 엗횽~ 안녕하세요 ^^
      오래간만에 들리셨군요.

      사실 그런 문제 때문에 가상머신 이미지를 만들어서 올려뒀습니다.
      빌드 오류때문에 다른 분들이 너무 어려워하시더라구요 ㅎㅎ

      나중에 시간나면 한 번 놀러오세요~ >ㅁ<)-b

  8. 2018.03.24 13:27  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of http://kkamagui.tistory.com BlogIcon kkamagui 2018.08.27 23:34 신고  댓글주소  수정/삭제

      아무래도 빌드가 정상적으로 되지 않을 것 같은데요, MINT64 OS의 QnA 사이트인 http://jsandroidapp.cafe24.com/xe/8920 에 가시면 가상머신을 이용하여 OS를 빌드할 수 있는 방법이 나와있습니다. ^^

      가상머신을 사용하는 것을 추천드립니다.

  9. 정진우 2018.03.31 19:09 신고  댓글주소  수정/삭제  댓글쓰기

    make file 빌드하는데 일케 떠요 make: *** No rule to make target 'a.c', needed by 'a.o'. Stop.

    • Favicon of http://kkamagui.tistory.com BlogIcon kkamagui 2018.08.27 23:32 신고  댓글주소  수정/삭제

      아무래도 빌드가 정상적으로 되지 않을 것 같은데요, MINT64 OS의 QnA 사이트인 http://jsandroidapp.cafe24.com/xe/8920 에 가시면 가상머신을 이용하여 OS를 빌드할 수 있는 방법이 나와있습니다. ^^

      가상머신을 사용하는 것을 추천드립니다.


티스토리 툴바