[GCC] gcc 4.6.0 설치 지침

3666 단어 gcc

운영 체제는 redhat x8664
gcc 소스 패키지 준비 필요
gcc-4.6.0.tar.bz2 http://gcc.gnu.org or ftp://gcc.gnu.org
 
먼저 세 개의 라이브러리를 준비합니다. 이 세 개의 라이브러리는 모두 고정밀 대수 계산 라이브러리입니다.
gmp-5.0.2 or higher http://gmplib.org/
mpc-0.9 or higher http://www.multiprecision.org/index.php?prog=mpc
mpfr-3.0.1 or higher http://www.mpfr.org
 
다운로드한 압축 패키지는 압축을 풀어야 합니다. bz2라면 tar-xvjf를 사용하고 gz라면 tar-xvzf를 사용하며 설치 패키지는 모두/home/gogdizzy에서 다운로드된다고 가정합니다.
cd /home/gogdizzy
tar -xvjf gmp-5.0.2.tar.bz2 
tar -xvjf mpfr-3.0.1.tar.bz2 
tar -xvzf mpc-0.9.tar.gz
tar -xvjf gcc-4.6.0.tar.bz2

 
mpc는 gmp와 mpfr에 의존하기 때문에 마지막으로 mpc를 처리합니다.
gmp 라이브러리 설치
 
cd gmp-5.0.2
./configure --prefix=/usr/local/lib/gmp-5.0.2/
make && make install

mpfr 라이브러리 설치
cd ../mpfr-3.0.1
./configure --prefix=/usr/local/lib/mpfr-3.0.1/
make && make install

mpc 라이브러리 설치
cd ../mpc-0.9
./configure --prefix=/usr/local/lib/mpc-0.9/ --with-mpfr=/usr/local/lib/mpfr-3.0.1/ --with-gmp=/usr/local/lib/gmp-5.0.2/
make && make install

이 세 라이브러리의 라이브러리 파일 경로를 설정합니다. (/etc/ld.so. conf 내용은include ld.so. conf.d/*. conf입니다. 따라서ld.so. conf.d에 파일을 추가합니다.)
cd /etc/ld.so.conf.d
cat >gcc-4.6.0.conf <<EXIT
> /usr/local/lib/gmp-5.0.2/lib
> /usr/local/lib/mpfr-3.0.1/lib
> /usr/local/lib/mpc-0.9/lib
> EXIT
ldconfig

 
이렇게 하면 경로가/etc/ld에 컴파일됩니다.so.캐치에 있습니다. 앞으로 저희 프로그램이 연결을 컴파일할 때 사용할 것입니다.
다음 컴파일링은 gcc-4.6.0을 설치합니다. 컴파일링이 길고 설정이 잘못되어 컴파일링에 실패할 수 있기 때문에 컴파일링 결과를 저장할 폴더를 새로 만듭니다. 컴파일링에 실패하면 컴파일링 결과를 rm에서 모두 제거하고 다시 설정합니다.
컴파일된 구성 옵션이 많습니다. 자세히 설명(http://gcc.gnu.org/install/configure.html):
cd /home/gogdizzy
mkdir gcc-4.6.0-build
cd gcc-4.6.0-build
../gcc-4.6.0/configure --prefix=/usr/lib/gcc/x86_64-redhat-linux/4.6.0/ --with-gmp=/usr/local/lib/gmp-5.0.2/ --with-mpfr=/usr/local/lib/mpfr-3.0.1/ --with-mpc=/usr/local/lib/mpc-0.9/ --mandir=/usr/sharegcc-4.6.0/man --infodir=/usr/share/gcc-4.6.0/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,go --disable-dssi --enable-plugin --with-cpu=generic
make && make install

설명: - host=x86 을 지정합니다.64-redhat-linux를 반으로 컴파일하는 중 오류가 발생했습니다. 변수를 일일이 열거할 수 없는 오류가 발생했습니다. 나중에는 아예 host를 지정하지 않았습니다. 기본값은 x86 입니다.64-unknown-linux, 오히려 컴파일에 성공했습니다.
 
이 때 gcc-v를 입력하면 오래된 버전입니다. 이것은 기본적으로/usr/bin/gcc를 호출하기 때문입니다. 저희가 설치한 것은/usr/lib/gcc/x8664-redhat-linux/4.6.0/에서 새 gcc 컴파일러를 사용할 수 있도록 합니다.gcc를 다시 체인으로 만들어야 돼요.
cd /usr/bin/
mv gcc gcc.bak
mv g++ g++.bak
ln -s /usr/lib/gcc/x86_64-redhat-linux/4.6.0/bin/gcc gcc
ln -s /usr/lib/gcc/x86_64-redhat-linux/4.6.0/bin/g++ g++

 
이때 gcc-v를 실행하면 이미 새 버전이 된 것을 발견할 수 있습니다. cpp 프로그램을 아무렇게나 쓰면 컴파일해도 문제가 없지만 실행할 때 문제가 발생할 수 있습니다.실행할 때 동적 라이브러리libstdc++와 관련이 있기 때문입니다.so.6, 기본적으로/usr/lib 또는/usr/lib64에서 찾을 것입니다. 그러나 여기는 오래된 라이브러리입니다. 버전이 일치하지 않습니다.새 라이브러리를 업데이트해야 합니다
cd /usr/lib/gcc/x86_64-redhat-linux/4.6.0/lib
mv ./* /usr/lib
cd /usr/lib/gcc/x86_64-redhat-linux/4.6.0/lib64
mv ./* /usr/lib64

 
자, 드디어 실행에 성공했습니다. 그러나 뒤에lib를 교체하는 작업은 모두 제가 시험한 것입니다. 전면적이거나 신뢰할 수 있는지 모르겠습니다. 또한 구 버전을 복원하려면/usr/lib과/usr/lib64의 동명 파일을 백업해야 합니다. 모두 주의해야 합니다.
 
 
참조 문서:
http://www.linuxidc.com/Linux/2011-05/35364.htm
 
 

좋은 웹페이지 즐겨찾기