2008. 7. 10. 13:25
     

 Cywin에서 크로스 컴파일러를 만들기위해서는 먼저 소스 패키지를 설치해야합니다. setup.exe 를 실행해서 Devel 부분의 Binutil gcc-core 의 소스 패키지를 선택하고 설치를 수행하면 소스가 /usr/src 폴더에 설치될 겁니다. ^^

1.Binary Utility Build

 제일 먼저 해야할 일은 binutil을 빌드하는 일입니다. x86_64용 크로스컴파일러를 빌드하기 위해서는 x86_64용 ld와 as 등등 각종 링커와 어셈블러들이 필요하기 때문이지요 ;) bintul을 빌드하는 방법은 아래와 같습니다.
  • export PREFIX=/usr/cross
  • export TARGET=x86_64-pc-linux
  • ./configure --target=$TARGET --prefix=$PREFIX --enable-64-bit-bfd --disable-shared
  • make configure-host
  • make LDFLAGS="-all-static"
  • make install
 위와 같이 실행하고나면 정상적으로 build된 경우 /usr/cross 라는 폴더가 생성되어있을 겁니다. 그 폴더에 들어가보시면 빌드 결과물을 확인할 수 있습니다. ;) 현재 x86_64 용 glib가 생성되어있지 않은 상태이므로, 공유라이브러리를 사용하지 않도록 --disable-shared-all-static 옵션을 줘야합니다. 주지 않을 경우 나중에 gcc 빌드할 때 문제가 발생합니다. ㅜ_ㅜ crti.o가 없다고 계속 에러가... ㅠㅠ

2. GCC Build

 그 다음 해야할 일은 gcc를 생성하는 일입니다. cygwin에 포함된 gcc 소스에는 소스 파일과 패치파일을 포함하고 있습니다. 정상적으로 빌드하기위해서는 패치를 수행해야 하는데, 다행이도 gcc-3.4.4.sh 라는 스크립트가 있습니다. 아래의 빌드를 수행하기 전에 먼저 아래와 같이 입력해서 패치를 수행합니다.
  • gcc-3.4.4.sh prepare
 위 과정이 정상적으로 끝나고나면 gcc-3.4.4-3 이라는 폴더로 이름이 변경될겁니다. 그럼 해당 폴더로 이동해서  아래의 순서대로 실행합니다.
  • export PATH=$PREFIX/bin:$PATH
  • ./configure --target=$TARGET --prefix=$PREFIX --disable-nls --enable-languages=c --with-newlib --without-headers --disable-shared --disable-threads
  • make configure-host
  • make LDFLAGS="-static" all-gcc
  • make install-gcc
 위와 같이 실행하고나면 /usr/cross에서 gcc관련 파일들을 보실 수 있습니다.

 이 간단한걸 하려고 며칠을 해매었는지 모르겠군요. ㅜ_ㅜ)-b
 다른 분들은 이런 걸로 고생 안하셨으면 합니다. ㅜ_ㅜ

Android App

Posted by 호기심 많은 kkamagui(까마귀, 한승훈)

댓글을 달아 주세요

  1. Favicon of https://ssmhz.tistory.com BlogIcon ㄱ효진님 2008.07.10 18:24 신고  댓글주소  수정/삭제  댓글쓰기

    와우 ! 역시 형님은 해내실줄알았어요 !

  2. RecoverLee 2008.07.11 02:08  댓글주소  수정/삭제  댓글쓰기

    남들 다 하는건 아니죠..ㅋ역시 대단하십니다..ㅎㅎ

  3. n0fate 2008.07.20 23:40  댓글주소  수정/삭제  댓글쓰기

    항상 저에겐 선구자이신 까마귀님 덕분에 쉽게 할 수 있을거 같네요^^

  4. EAl 2014.01.07 21:58  댓글주소  수정/삭제  댓글쓰기

    저는 자꾸 make configure-host에서 configure-ld가 실패했다고 하네요 어떻해야 하죠 그냥 넘어가도 되나요? ㅠㅠㅠㅠㅠㅠ

    • Favicon of https://kkamagui.tistory.com BlogIcon 호기심 많은 kkamagui(까마귀, 한승훈) 2014.01.12 14:28 신고  댓글주소  수정/삭제

      안녕하세요, EAI님 만나서 반갑습니다. ^^
      만약 configure가 실패했다면 다음 단계도 정상적으로 실행되지 않을 가능성이 높습니다.

      http://www.mint64os.pe.kr로 가셔서 MINT64 OS 관련 QnA를 보시면 크로스컴파일에 대한 많은 정보를 얻으실 수 있는데요, http://jsandroidapp.cafe24.com/xe/7263 글과 http://jsandroidapp.cafe24.com/xe/3171 글을 참고하시면 많은 도움이 되실겁니다. ^^

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