'Cygwin'에 해당되는 글 1

  1. [OS/161] #0 컴파일 환경 구축 2009/12/25

[OS/161] #0 컴파일 환경 구축

Posted at 2009/12/25 22:43 // in Note/OS // by drDorothy
지금 구축할 컴파일 환경은
1. 윈도우에서 유닉스(리눅스) 환경을 만들고..
2. mips용 크로스 컴파일러(gcc)를 구축한 다음..
3. 이클립스를 이용한 개발환경을 만들어 보겠습니다.
물론 gdb도 사용가능 합니다.

아직까지는 vi 사용이 너무 힘들어서 이클립스의 cygwin과 연결기능을 이용하여..
최대한 비주얼 환경을 구축할 것입니다.

  1. Cygwin 설치 (http://www.cygwin.com)
    setup.exe 를 내려받은 다음 실행시키면 설치 단계가 나오게 된다. 각 단계별 행동은 아래와 같습니다.
    1. Install from Internet을 선택
    2. 설치할 루트 디렉터리를 설정 후, 나머지는 기본 설정을 유지
    3. 로컬 패키지 폴더를 적당한 곳에 잡습니다. (설치파일의 임시저장폴더)
    4. Direct Connection 선택
    5. 다운로드 사이트 선택화면이 나오면, 적당히 ftp://ftp.daum.net 등을 선택 (원하는곳 선택)
    6. 패키지 선택화면이 나오면 view를 full로 만들고 아래의 패키지를 선택
    (gcc-core, libncurses-devel, make ※주의: gcc4 아님)
    7. 바탕화면의 cygwin을 실행시켜서 작동을 확인하세요.

    resize_image

    이런 화면이 나오면 성공입니다.



    Cygwin의 기본콘솔을 Putty로 사용하려면..


    Cygwin 프롬프트 모양 변경..


     
  2. Tool Chain 구축
    설치 순서는 먼저 Binary utility들을 컴파일 후, MIPS cross compiler (GCC) 를 구성한 다음,
    os161용 GDB를 컴파일 하고, os161의 simulator인 sys161을 설치하고,
    최종적으로 os161을 컴파일 해서 테스트 하겠습니다. (옆의 첨부 파일에 모두 포함되어 있습니다.)
    (첨부 파일이 31.1 MB 라서 외부 링크는 자제를 부탁합니다. - 1일 트래픽 1GB 제한임)

    첨부파일은 내려받은 다음, "cygwin\home\로그인명" 안의 적당한 폴더에 압축을 풀어둡니다. (총 6개의 파일)
    확장자가 tar 인 파일은 적당히 압축(?)을 풀어서 준비해 둡니다.

    ●  Binary Utilities(Binutils) 설치 (상당히 오래걸림...)

     -  압축을 풀어둔 폴더로 이동(cd cs161-binutils-1.5) 합니다.
     - ./toolbuild.sh --cs161dir='설치하고자 하는 디렉토리' (eg: /usr/cs161) 실행
     - home/로그인명 폴더에 가서 .bashrc 파일의 가장 아래쪽에 아래의 문장을 추가합니다.
     - export PATH=/usr/cs161:/usr/cs161/bin:${PATH}
     - (위의 /usr/cs161은 자신이 설치한 폴더입니다.)

    ●  GCC MIPS Cross-Compiler 설치 (상당히 오래걸림...)

     - 압축을 풀어둔 폴더로 이동(cd cs161-gcc-1.5) 합니다.
     - ./toolbuild.sh --cs161dir='설치하고자 하는 디렉토리' (eg: /usr/cs161) 실행

    ●  GDB 설치 (상당히 오래걸림...)

     - 압축을 풀어둔 폴더로 이동(cd cs161-gdb-1.5) 합니다.
     - ./toolbuild.sh --cs161dir='설치하고자 하는 디렉토리' (eg: /usr/cs161) 실행

    ●  SYS161 simulator 설치

     - 압축을 풀어둔 폴더로 이동(cd sys161-1.14) 합니다.
     - ./configure --installdir='설치하고자 하는 디렉토리' --docdir='document 디렉토리' mipseb 실행
     - (eg) ./configure --installdir='/usr/cs161' --docdir='/usr/cs161/document' mipseb
     - make
     - make install
     
    ●  os161 설치

     - 압축을 풀고 적당히 원하는 이름으로 변경 후 폴더로 이동(cd os161) 합니다.
     - ./configure --ostree='컴파일 결과가 저장될 폴더'
     - (eg) /home/Dorothy/cs161 - 앞으로 나오는 Dorothy는 제 기본폴더(~) 입니다.
    - make
    - (위의 과정은 os161 초기 설치 입니다.)

     - cd kern/conf
     - ./config ASST0
     - cd ../compile/ASST0
     - make depend
     - (위의 과정은 매 ASST 마다 해야하는 일입니다.)

     - make
     - make install
     - (위의 과정은  실제 컴파일과 컴파일된 바이너리의 저장입니다.)

    resize_image

     - 이제 작동여부를 확인하기 위해서, 컴파일 결과가 저장된 폴더로 이동합니다.
     - 그리고 압축파일에 같이 포함되어 있던 sys161.conf 파일을 os161 설치시 사용한,
     - 커널 이미지가 저장되는 폴더에 집어넣습니다.
    - 그리고 아래의 과정을 수행합니다.

    - cd ~/cs161
     - sys161 kernel
     - 아래와 같은 결과가 나온다면 성공한 것입니다

    resize_image

  3. Eclipse 설치 및 연동 (http://www.eclipse.org/downloads/)
    위의 Eclipse 다운로드 사이트에서 Eclipse IDE for C/C++ Developers 를 선택한다.
    (이때 자신의 컴퓨터에 Java가 반드시 깔려있어야 함)
    적당히 압축을 풀고 Eclipse를 실행한 다음, 아래의 과정을 따라한다.
     
    ● 메뉴의 [File] → [New] → [C Project] 선택
     
    resize_image

    이때 Location은 자신이 os161-1.11.tar 을 풀어둔 폴더이다.
    계속해서 Next를 누른 다음, [Advanced settings...] 를 선택 후 아래와 같이 설정한다.
     
    resize_image

    마지막으로 Environment 에서 PATH를 아래와 같이 추가해 준다.
    C:\cygwin\bin;C:\cygwin\usr\cs161;C:\cygwin\usr\cs161\bin
     
    resize_image

    이것으로 기본적인 환경설정은 끝이다.
    이제 실제로 되는지 확인해 보자.
    아래와 같이 main.c 파일의 Put-your-group-name-here 를 자신의 이름으로 바꿔보자.
     
    resize_image

    그 후, 오른쪽 메뉴의 아웃라인을 메이크 타겟으로 변경한 다음, ASST0에 마우스 오른쪽 클릭 후, New를 선택한다.
    옆의 그림처럼 clear, depend, install 을 차례로 생성한다. (이때 Target Name만 입력)
    make의 경우에는 [Same as the target name] 을 체크 해제하고 [Make Target]은 공란으로 둔다.
     
    이제 make를 더블클릭하고 위와 같은 콘솔화면이 나타나서 완료가 되면..
    install을 더블클릭해서 커널이미지를 실행폴더로 옮긴다.
     
    마지막으로 바뀐 결과를 확인하기 위해서 cygwin을 실행시켜 방금 컴파일한 커널을 실행한다.

    resize_image

    위의 결과처럼 Dorothy (방금 지정한 문자열) 가 출력되면 성공한 것이다.
    이제 모든 준비는 끝났다.
    다음회 부터는 진짜 os161 설계를 시작하겠다.
2009/12/25 22:43 2009/12/25 22:43