-
gcc 빌드 및 설치 방법Linux 2016. 3. 31. 17:35반응형
예전에 수석님이 gcc 5.3.0 을 설치해 보라고 해서
뭔지도 모르고 설치를 해본 적이 있었다.
rpm이나 tar로 배포되는게 있겠지~ 했는데
최신 버전이었나? 그래서 소스코드로 빌드해야 한다고 했었다.
근데 gcc 요놈은 빌드가 상당히 까다로웠던 것 같다.
필요한 라이브러리들이 꽤 많고
make, make install 하는 시간도 굉장히 길었었다.
여기까지는 과거 이야기.
오늘은 centos 6.7을 minimal로 설치 후 회사 제품을 빌드해볼 기회가 생겼다.
신나게 빌드 하는데 몇 몇 패키지가 없어서 에러가 났다.
libtool이 없어서 yum을 이용해서 걍 깔았다.
gcc도 yum으로 깔았다.
그리고 다시 빌드를 하는데...
libtool 버전이 너무 낮다며 2.4.2 이상을 설치해야 한다고 에러를 토해냈다.
centos 6.7에서 yum으로 찾아봐도 libtool은 2.2.2인가 구닥다리 버전이 최신으로 등록되어 있었다.
구글님과 Q&A 시간이다.
"libtool 2.4.2 download" 로 문의했다.
libtool 2.4.2 rpm설치 파일을 찾았다.
다운받았다.
설치를 시도했다.
$ sudo rpm -ivh libtool-2.4.2*
ㅋㅋㅋㅋㅋㅋ
gcc 버전이 4.8.2 이상이 필요하다고 또!!!! 왜 또!!! 에러를 토해낸다.
거지같다.
또 다시 구글님과 Q&A 시간을 갖았다.
"gcc-4.8.2를 주세요"
하려다가
에이 이렇게 된거 그냥 빌드해서 최신 버전으로 가자!
라고 결정해서!!
빌드를 시작했다.
준비물 : gcc-5.3.0 소스 파일, 그 외 없음
일단 필요한 패키지들을 설치할 시간이다.
내가 뭘 어떻게 설치했었지...
떠올려라 떠올려라...
할 시간에 구글님께 또 문의했는데...
어마어마한 팁을 알려주셨다.
일단 소스코드 루트 폴더로 들어가보자. (내 경우 소스코드 루트 디렉토리는 gcc-5.3.0 이다)
$ cd gcc-5.3.0
들어가면 굉장한 팁을 품은 디렉토리가 하나 있다.
보이는가?
들어가보자.
$ cd contrib
굉장한 팁을 눈치 챘는가? 못 챘다면 당연한거다.
바로 다음 파일을 열어보자.
$ vi download_prerequisites
여기에는 친절하게도 gcc 빌드 전 다른 패키지들을 따로 번거롭게 귀찮게 힘들고 짜증나게 설치할 필요 없게
친절하게도 모두 다운 받을 수 있도록
스크립트로 제공 되어 있다.
이걸 몰라서 그렇게 삽질을 했었다니!!!!
해당 패키지들은 산술 관련 라이브러리들이다.
패키지 설명은 본 포스팅의 주제를 벗어나므로 더 이상의 설명은 생략한다.
하지만 내가 나중에 보기 위해 링크를 남겨두겠다.
해당 스크립트는 gcc-5.3.0 즉, gcc 루트 디렉토리에서 실행해야 된다.
안그럼 아래와 같은 에러를 토해내며 스크립트가 끝난다. 놀라지 말기 바란다.
"너 이놈! 이 스크립트를 GCC 최고 레벨에서 돌리란 말이야!!!"
다시, gcc-5.3.0 루트 디렉토리에서 패키지들을 설치해주자.
$ ./contrib/download_prerequisites
간단하게 설치된다.
빌드를 하기 전에
configure 파일을 만들어 보자. 난 c, c++ 모두 필요하다.
$ ./configure --prefix=/usr/local/gcc-5.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
그럼 이제 make를 실행해보자.
$ make
아니면 내 컴퓨터는 성능이 너무 빵빵해서 더 빠르게 빌드 할꺼야!
라고 생각이 든다면
다음과 같이 빌드를 해보자.
$ make -j <CPU core 수>
자세한 내용은 링크에서 참고했으니 들어가서 보시기 바란다.
아무튼 빌드를 시작하면 굉장한 인내심을 필요로 한다.
걍 켜놓고 어디 1~2시간 놀다오면 필요 없지만.
또한,!!!!
빌드 중간에 생성되는 파일들이
어마어마한 사이즈를 자랑한다.
만약 디스크 공간이 쥐똥만하다면
디스크 풀을 발생시키며
빌드가 실패할 수 있으니
조심하기 바란다.
(내가 그랬다.. 제길)
또한!!!
신기하게도
빌드를 하다가
이상한 에러를 토해내면서 빌드가 실패할 수 있다.
대략 이런 에러였다.
configure: error: error verifying int64_t uses long long make[2]: *** [configure-stage1-gcc] Error 1 make[2]: Leaving directory `/home/sjarvis/dev/gcc/srcdir' make[1]: *** [stage1-bubble] Error 2 make[1]: Leaving directory `/home/sjarvis/dev/gcc/srcdir' make: *** [all] Error 2
뭐야 이게!!
롱롱이라니!!!
이럴 경우 침착하게 다음 명령어를 날린 후 make를 해보자.
$ sudo yum install -y gcc-c++
컴파일러 설치하는데 c++ 컴파일러가 필요하다니?!!!
빌드가 에러 없이 잘 끝났다면
설치를 해보기 바란다.
$ make install
또 어디 가서 1 ~ 2시간 놀다오면 된다.
아무런 탈도 없고 에러도 없이 설치가 끝났다면
확인을 한번 해보자.
나 말고 누구 하나 믿을 사람 없으니 말이다.
$ gcc --version
이쁘게 5.3.0이란 글자가 아래와 같이 찍히면 빌드 및 설치가 끝난 것이다.
(사실 VM에 설치중이라 겁나 느려서 결과까진 못봤으나 에러가 나거나 뭔가 발견한다면 추가적인 포스팅을 하겠다)
----- 추가 내용 -----
configure 할 때 prefix=/usr/local/gcc-5.3.0 으로 잡았으니
gcc 파일들이 /usr/local/gcc-5.3.0에 설치가 됬을 것이다.
그렇다면~~~!!!!
위의 gcc --version하면 아예 안뜨거나
옜날 버전이 나오는게 당연할 것이다.
(미안합니다 ㅎ)
그럼 이제 설치된 gcc 5.3.0을 환경변수로 잡아주자.
profile 파일을 열어서
$ sudo vi /etc/profile
아래 내용을 추가 해보자.
export GCC=/usr/local/gcc-5.3.0 export C_INCLUDE_PATH=$GCC/include/c++/5.3.0/ export CPLUS_INCLUDE_PATH=$GCC/include/c++/5.3.0/ export LD_LIBRARY_PATH=$GCC/lib64:$PPL/lib:$LD_LIBRARY_PATH export PATH=$GCC/bin:$PATH
자... 드디어... 버전을.. 버전을 확인해보자... 하앍 하앍
$ gcc --version gcc (GCC) 5.3.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
그럼 이만~
반응형