안녕하십니까!!
toolchain 관련해서 질문 드리려구 하는데요~~
지금 s3c6410 보드에서 안드로이드 플랫폼이 돌아가는 환경에서 공부중인데요~~
사용하는 툴체인에 gdb가 설치되어 있지 않아서 gdb 소스를 받아서 컴파일 후 디버깅을 하려고 합니다.
우선 arm-linux-gcc -v을 쳐서 버전을 확인해 본 결과 - gcc version 4.3.1 이고 몇가지 Configured with 가 나오더라구요
1. 현재 설치되어 있는 arm-linux-gcc 버전과 설치하려는 gdb 버전의 관계 있게 컴파일 해야 하는 건가요? ( 서로 맞는 버전이 있나요?? )
2. gdb 소스 컴파일을 하여 설치하려고 할때 일련의 과정이 어떻게 되는 건가요?? ( configrue ... make ... )
( 설치된 arm-linux-gcc -v 에 관련된 configure을 사용해야 하나요?? )
3. 또한 제가 직접 타겟에 맞는 gcc을 소스 받아서 해보려면 어떤 과정을 거쳐야 하나요? ( 툴체인 미 제공시...)
답변 해주시면 감사하겠습니다..
그럼~~ 좋은 하루 보내세요 :)
댓글 4
-
김민종
2010.04.28 22:43
-
이상철
2010.04.29 11:42
크로스툴이라는것이 있습니다. 보통 그것을 사용해서 크로스 컴파일러를 만듭니다.
http://kegel.com/crosstool/
0.43이후로 업데이트가 안되는거 같긴 하지만요.
참고로 크로스툴 0.43에서 arm eabi가 지원되지 않아서 이솝보드에 있는것을 이용해야 될 것입니다.
이솝보드에 가보시면 고현철씨가 eabi 지원되도록 업데이트한 버젼도 있을 겁니다.
툴체인 생성하는 법을 알고 싶으시면 위의 것을 분석하시면 될것 같습니다.
그리고 falinux와 같은 곳에 가보시면 크로스 컴파일러를 소스를 받아서 컴파일 하는 방법이 있을 겁니다.
이건 하도 오래되서 기억이 가물가물 하네요..ㅡㅡ;;
-
이상철
2010.04.29 13:11
위의 크로스 툴은 툴체인 생성 툴로 전부 다 생성 됩니다. 제가 크로스 컴파일러라고 한 것은 실제 보드에 적용해서 사용할 수 있는 상태를 말하는 것이었습니다.
툴체인 빌드과정을 간략하게 적으면 아래와 같습니다.
1) target시스템에 맞게 binutils를 컴파일.
2) kernel 헤더를 위해 커널 선정 컴파일.
3) glibc를 컴파일하기 위핸 gcc pre compile
4) glibc 패키지 컴파일
5) glibc와 연동하기 위해 gcc 재 컴파일
보통 이런 식의 과정을 거칩니다. 중간에 다른 것이 더 추가 될 수 있습니다. gcc 4.x 버전의 경우 처음 3.x버전으로
먼저 설치하고 gcc4.x로 올리는 경우도 봤던 거 같습니다.
그리고 gdb는 암때나 중간중간에 껴서 컴파일 하시면 됩니다. 위의 과정과 별도로 수행이 가능 하니깐요..
그리고 참고로 ./configure를 수행 시 --host 옵션은 실행파일이 해당 target용으로 나오는 것이고요,
--target은 실행 파일은 현재 수행되는 host환경으로 나오고, 실행에 대한 결과물이 target용으로 나옵니다.
그러므로 binutils, gcc, 를 컴파일 할 때는 --target 옵션을 해야 되고, glibc를 할 때는 --host옵션을 사용해야 합니다.
-
김민종
2010.04.30 00:01
어렵긴 하네요~~ 처음 접하는 거라서요...
좋은 정보 감사드립니다~~ :)
.
감사합니다..
그런데 bintools도 버전이 있지 않아요... 리눅스라는 게 버전에 예민한 분이라서..
보드를 사면 어느정도 개발할 수 있게 툴체인을 주는...
공부하는 차원에서라두 한번 툴체인을 만드는 과정을 해보고 싶었습니다.
즉,, 만들어진 툴체인을 보고 따라서 만들 수 있는 방법을 알고 싶습니다.