특정 사용자 계정에 대한 gcc 업그레이드

특정 사용자 계정에 대한 gcc 업그레이드

저는 단일 IT 관리자가 감독하는 ~100명의 다른 사용자와 공유하는 CentOS6/RHEL6을 실행하는 컴퓨팅 클러스터에서 작업합니다.

최근에 저는 C++로 글을 쓰기 시작했는데, 제 코드 중 일부는 C++11에 의존하고 있습니다. 에 따르면이 웹페이지, C++11은 gcc버전 4.8.1 이상에서 지원됩니다.

불행하게도 컴퓨팅 클러스터의 버전은 4.4.7입니다.

얼마 전, 다른 이유로 gcc클러스터의 홈 디렉터리 아래 위치에 버전 4.8.4를 설치하려고 했습니다. 설치에 실패했습니다.이 오류 메시지. 일부 인터넷 검색을 통해 업데이트해야 한다고 생각하여 glibc홈 디렉토리에 최신 버전을 설치하려고 했습니다. 저것극적으로 실패했다.

gcc내 IT 관리자는 " 클러스터에서 버전을 수정하는 것은 아마도 작동하지 않을 것입니다."라고 결론지었습니다. 더 많은 질문으로 그녀를 괴롭히기 전에(이 시점에서 나는필요업데이트된 버전일부C 컴파일러), 나는 이것을 크라우드 소싱하고 있습니다:

(1) gcc내 사용자 계정에 버전 4.8.1+을 설치하는 것이 가능합니까? (지난번에 이 작업을 시도한 후 어떤 사람들은 근본적으로 끔찍한 아이디어라고 말했습니다.)

(2) (1)에 대한 대답이 '예'라면 이번에는 설치가 성공했는지 확인하기 위해 어떤 예방 조치를 취해야 합니까? glibc내 계정에 설치 해야 합니까? 그게 가능할까요?

gcc(3) (1)에 대한 대답이 '아니요'인 경우 IT 관리자가 이미 존재하는 버전에 의존하는 코드를 중단하지 않고 시스템 전체 에 최신 버전을 설치할 수 있습니까 ?

(4) 위의 어느 것도 에 적합하지 않은 경우 gcc다른 C 컴파일러에서는 상황이 바뀌나요?

요약하자면, 가능하다면 gcc(권한 없는) 사람이 업그레이드하는 방법을 설명하기 위해 (또는 다른 C 컴파일러) 지식이 있는 사람을 찾고 있습니다 .sudo

답변1

Centos 6.7의 홈 디렉터리에 있는 소스에서 GCC 4.8.5를 빌드할 수 있었습니다. 저는 배포판 glibc를 사용하고 있습니다. 나는 glibc를 만들 필요가 없었습니다.

주의 사항: 배포판의 GCC 4.4.x 소스 패키지에 대한 빌드 종속성과 libmpc-develepel 저장소의 패키지가 설치된 시스템에서 이 작업을 수행하고 있습니다. 이것이 누락된 경우 먼저 소스에서 홈 디렉터리로 빌드하고 거기에서 사용할 수 있도록 gcc 빌드 프로세스를 변경해야 할 수도 있습니다(가능한 경우).

GCC 구축:

  1. GCC 소스 가져오기

    curl -LO https://mirrors.kernel.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
    
  2. 발췌

    tar xf gcc-4.8.5.tar.bz2
    
  3. GCC 소스 디렉터리 외부에 빌드 디렉터리를 만들고 해당 디렉터리로 이동합니다.

     mkdir build && cd build
    
  4. 구성합니다. 나는 그랬다:

     ../gcc-4.8.4/configure --build=x86_64-linux-gnu --prefix=/home/rakslice/gcc_4_8 \
                            --enable-checking=release --enable-languages=c,c++,fortran \
                            --disable-multilib --program-suffix=-4.8
    
  5. 짓다. 코어가 4개 있어서 다음과 같이 했습니다.

     make -j 5
    
  6. 설치하다

     make install
    
  7. 이제 일부 테스트 코드를 컴파일하고 실행할 수 있습니다.

     /home/rakslice/gcc_4_8/bin/g++-4.8     hello.cpp   -o hello
     ./hello
     Hello, World!
    

답변2

귀하의 특정 질문과 관련하여:

(1) 네, 가능하지만 재미가 없을 수도 있습니다.

(2) 아니요. 일반적으로 시스템 glibc를 사용할 수 있습니다. gcc에서 등이 필요합니다 libstdc++.libgcc

내 접근 방식은공식 지침 아주 가까이귀하의 플랫폼과 매우 잘 일치하는 경우에만 비공식 지침을 따르십시오.

나는 실제로 4.8에 신경 쓰지 않고 현재 릴리스 시리즈(5.2 또는 4.9) 중 하나로 바로 이동합니다.

참고: 저는 루트가 아닌 gcc 설치를 직접 수행하지는 않았지만 gnu 모듈로 다른 버전의 gcc를 유지 관리하는 시스템에서 작업합니다.

관련 정보