GCC 업그레이드로 인한 참사

2402 단어
사건의 원인은 이렇다. 오늘 낡은 CentOS5 서버에 node-zerorpc 를 설치할 때 힌트:
우리는 C++11을 사용해야 한다. 빨리 꺼져서 G++를 업그레이드해야 한다
그래, 그렇게 말했으니까...그리고 이 링크와 SF적인 답변을 참고해서 다음 스크립트를 만들었습니다.
cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-2/devtools-2.repo 
yum install devtools-2
yum install devtoolset-2-gcc devtoolset-2-gcc-c++

##  /usr/bin gcc  /opt/rh/devtools-2  gcc/g++  
##  

늙은 종이가 4.8까지 올라갔는데 C++11이 안 될까봐 스님의 매력에 굴복했나 봐요.설치 과정에서 역시 버전이 너무 낮은 오류를 보고하지 않았습니다. Assembler Error를 보고했습니다. 이 문제는 Google에서 해결되지 않았습니다. 유일하게 몇 개의 GCC의 Bug Issure를 언급했지만 문제를 해결할 수 없습니다. 당시 Node를 다시 컴파일해야 한다고 추측했습니다. 컴파일하는 과정의 오류 로그는 다음과 같습니다.
/tmp/cc8TKj9o.s: Assembler messages:
/tmp/cc8TKj9o.s:125: Error: unknown .loc sub-directive `discriminator'
/tmp/cc8TKj9o.s:125: Error: junk at end of line, first unrecognized character is `1'
/tmp/cc8TKj9o.s:140: Error: unknown .loc sub-directive `discriminator'
/tmp/cc8TKj9o.s:140: Error: junk at end of line, first unrecognized character is `2'
/tmp/cc8TKj9o.s:143: Error: unknown .loc sub-directive `discriminator'
/tmp/cc8TKj9o.s:143: Error: junk at end of line, first unrecognized character is `2'
/tmp/cc8TKj9o.s:146: Error: unknown .loc sub-directive `discriminator'
/tmp/cc8TKj9o.s:146: Error: junk at end of line, first unrecognized character is `2'
/tmp/cc8TKj9o.s:150: Error: unknown .loc sub-directive `discriminator'
/tmp/cc8TKj9o.s:150: Error: junk at end of line, first unrecognized character is `2'
/tmp/cc8TKj9o.s:171: Error: unknown .loc sub-directive `discriminator'
/tmp/cc8TKj9o.s:171: Error: junk at end of line, first unrecognized character is `1'
/tmp/cc8TKj9o.s:179: Error: unknown .loc sub-directive `discriminator'
/tmp/cc8TKj9o.s:179: Error: junk at end of line, first unrecognized character is `1'
/tmp/cc8TKj9o.s:187: Error: unknown .loc sub-directive `discriminator'

그 다음에 Hello World가 새 컴파일러로 컴파일한 결과 같은 유형의 오류가 발생했습니다. 그러면 문제의 원인은 확실합니다. 컴파일러에 문제가 생겼습니다!
뭐가 문제지?한창 머리가 컸을 때 갑자기 Issure가 생각났는데, 내용은 대체로
gcc와 g++의 버전이 일치하지 않을 때 Assember Error가 발생할 수 있습니다.
그렇다면 GNU 키트를 모두 장착하면 어떨까요?과연 문제가 해결되었다.
부록: 올바른 업그레이드 스크립트
cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-2/devtools-2.repo 
yum install devtools-2
yum install devtoolset-2

# gcc 
scl enable devtoolset-2 bash

좋은 웹페이지 즐겨찾기