티스토리 뷰

낙서

[HOWTO] ARM용 GCC만들기

nodeal 2013.12.30 23:12

※ 문제생겨도 책임안집니다.

※ 저는 모든 과정을 삼성 갤럭시 S3 LTE(E210L, c1lgt)로 진행했습니다. 기기의 차이에서 오는 문제는 도와드릴 수 없습니다.
준비물: 
필수사항-
기기상태: 우분투(10.04 Lucid)가 설치되어있어야 합니다. 네이티브가 아니더라도 이미지 마운트-chroot하는 방식도 문제없습니다.
필요한 파일 (반드시 tar 또는 tar.gz을 받으세요. zip받으시면 책임못집니다):
GCC 소스 4.7.2
http://ftp.kaist.ac.kr/gnu/gnu/gcc
MPFR 소스 3.1.1
http://ftp.kaist.ac.kr/gnu/gnu/mpfr
MPC 소스 1.0.1
http://ftp.kaist.ac.kr/gnu/gnu/mpc
GMP 소스 5.1.1
http://ftp.kaist.ac.kr/gnu/gnu/gmp
GNU Make 소스 3.82
http://ftp.kaist.ac.kr/gnu/gnu/make

권장사항: 가급적 멘탈은 저 멀리 두세요.

* 준비
우분투를 켭니다. 위에서 받은 모든 압축파일은 /root에 풀어주세요.
우분투를 제가 포스팅한대로 설치하셨다면 하실게 있습니다.

<Shell I - 기본경로설정1>
vi /root/.bashrc

vi에디터로 /root/.bashrc를 열었습니다. 맨 밑에 다음을 추가해주세요.

<Shell II - 기본경로설정2>
export PATH=$PATH:/sbin
export PATH=$PATH:/usr/sbin
export PATH=$PATH:/usr/local/bin
export PATH=$PATH;/usr/local/sbin

:wq로 빠져나오시고 우분투를 종료했다 다시 실행합니다.

<Shell III - 우분투 재부팅>
네이티브: reboot
가상: exit

가상의 경우 마운트해제중 오류가 날 수 있습니다. 그럴땐 기기를 재부팅해주세요.

다음의 패키지를 받습니다.
<Shell IV - 패키지설치>
apt-get update
apt-get install gcc make
apt-get install libncurses5-dev gzip bzip2 make tar perl zip unzip autoconf m4 automake gettext gperf dejagnu expect tcl autogen guile-1.8 flex texinfo ssh diffutils patch ecj1 gnat bison byacc

이제 빌드할 모든 준비가 끝났습니다.
우선 make부터 컴파일하겠습니다.
GNU Make은 모든 오픈소스 유닉스 소프트웨어를 빌드하는데 반드시 필요한 것입니다. GCC도 그중 하나여서 GNU Make을 필요로 합니다.
apt-get으로 GNU Make 3.81을 이미 받았습니다. 그냥 넘어가실 분들은 넘어가셔도 좋지만 최신버전으로 하고 싶으시다면 따라하시면 됩니다.

<Shell V - GNU Make>
cd /root/make-3.82
./configure
make all -jXX
(XX=기기의 코어 또는 스레드 수. EX) 기기가 갤럭시S3라면 make all -j4. 하지만 모든 코어를 사용하면 기기에 무리가 갈 가능성이 크니 적당히 자신 기기에 맞는 수치를 찾으시길 권장드립니다. 저는 갤럭시S3임에도 불구하고 make all -j2를 했습니다.)
make check (오류가 있으면 확인하고 고쳐주세요.)
make install

GNU Make 최신이 설치되었습니다.

이제 GMP, MPFR, MPC를 설치해야합니다.
GCC는 컴파일시 저 세 부가 라이브러리를 요구하고, 셋 끼리도 서로 다른 라이브러리를 요구합니다. 그러므로 설치순서에 유의하세요.

<Shell VI - GMP>
cd /root/gmp-5.1.1
./configure
make all -jXX
make check
make install

<Shell VII - MPFR>
cd /root/mpfr-3.1.1
./configure
make all -jXX
make check
make install

<Shell VIII - MPC>
cd /root/mpc-1.0.1
./configure
make all -jXX
make check
make install

필요한 모든 부가적 라이브러리 설치가 끝났습니다.


* GCC 컴파일
이제 GCC를 컴파일해봐야겠죠?
사실은 GCC도 아까 apt-get으로 4.4.3을 받았고 받았기에 지금까지 컴파일할 수 있었습니다.
하지만 ARM용에서의 버전지원을 알 수 없을 뿐더러 점점 다른 소프트웨어로부터 요구되는 GCC버전이 올라감에 따라 직접 해보도록 하겠습니다.

<Shell IIX - GCC>
cd /root/gcc-4.7.2
./configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local
make all -jXX
make check
make install

다른 것들과 다르게 configure시 다른 옵션이 붙는데요, 바로 우리가 아까 컴파일한 라이브러리들의 경로를 잡아주는 것 입니다.
원래는 /usr이 기본 경로지만 소스를 통한 소프트웨어 설치는 거의 /usr/local에 이루어집니다. 그러므로 헷갈리지 않도록 옵션을 달아줍니다.
그리고 이때는 make check를 꼭 해보셔야합니다. 혹시나 나중에 GCC사용중에 오류가 나면 그제서야 고치긴 어려울테니 반드시 컴파일중 문제가 있었나를 검사해주세요.
make install시 GCC를 따로 빼내고 싶다면 DESTDIR옵션을 붙여주면 됩니다.
EX) make DESTDIR=/root install
위의 라이브러리나 GNU Make도 가능하지만 필요가 없을거같아 안하다가 GCC는 배포를 위해서라도 필요하니 알려드립니다. 단, 저 DESTDIR에는 반드시 절대경로가 지정되어야합니다.
EX) make DESTDIR=/root install (O)
EX) make DESTDIR=../ install (X)



그럼 모든 설치가 끝났습니다.
GCC를 빼셨다면 tar.gz으로 압축시 200MB남짓일 것입니다. 소스보다 용량이 크죠?

이쯤에서 강좌는 마치도록 하겠습니다.
버그리포팅은 제가 아는 한도에서 해드리지만 안되면 gcc.gnu.org를 찾아보거나 직접 이메일로 묻는 것도 좋습니다.

감사합니다.

'낙서' 카테고리의 다른 글

C++ 포인터 주소값 저장하기  (0) 2017.10.12
C++ 동적할당의 고찰  (0) 2017.08.07
[HOWTO] Windows8 설치하기  (0) 2013.12.30
[HOWTO] 안드로이드에 우분투 설치하기  (0) 2013.12.30
[HOWTO] ARM용 GCC만들기  (0) 2013.12.30
[HOWTO] 빌드속도향상  (0) 2013.12.30
댓글
댓글쓰기 폼