rhel 6 x86_64에 최신 gcc 설치

rhel 6 x86_64에 최신 gcc 설치

gcc 버전 4.4.7이 설치된 RHEL 6 서버가 있습니다. gcc 버전을 업데이트하고 싶습니다(현재 버전은 4.8인 것 같습니다). Yum 업데이트가 작동하지 않습니다. 반품,SO는 CentOS에 대한 유사한 질문에 답변합니다.작동하지 않습니다. 나는 허용된 답변의 방법을 따랐고 출력은 "testing-1.1-devtools-6에 대한 저장소 데이터를 가져오는 중 오류가 발생했습니다. 저장소를 찾을 수 없습니다"였습니다. 또한 CentOs의 접근 방식을 따라야 할지 잘 모르겠습니다.

RHEL 6 x86_64 서버에서 gcc를 업데이트한 사람이 있나요?

답변1

지금까지 가장 쉬운 방법은 YUM 저장소를 통해 제공되는 바이너리 빌드를 사용하는 것입니다. 한 가지 옵션은 다음을 사용하는 것입니다.점프 5인치저장소. 특히 이 페이지는 다음과 같습니다.gcc - 다양한 컴파일러(C, C++, Objective-C, Java...). CentOS 6.3 또는 6.4에서 작동하는 4.8.2를 제공합니다. 미리 업데이트할 수 있습니다.

$ sudo yum update

또 다른 옵션은 다음을 활용하는 것입니다.개발자 도구 세트, 특히 Scientific Linux에서 제공하는 번들 버전입니다.

따르다설치 참고 사항기본적으로 다음 2단계를 수행합니다.

저장소 추가
$ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
$ wget -O /etc/yum.repos.d/slc5-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc5-devtoolset.repo
개발 도구 세트 설치
$ sudo yum install devtoolset-2

업데이트 #1

YUM 저장소의 hop5가 제거된 것으로 보이므로 위에 강조 표시된 devtoolset 방법을 사용하는 것이 유일한 방법입니다.

devtoolset을 통해 설치된 추가 예제는 이 GitHub Gist에 강조되어 있습니다.CentOS 6에 gcc 4.8 및 Linuxbrew 설치.

답변2

Red Hat 소프트웨어 컬렉션GCC 4.9와 함께 제공하면 이 채널을 활성화하는 것을 고려할 수 있습니다.

답변3

이제 rhel6용 최신 gcc 버전(4.7.x에서 5.3.1까지)의 여러 버전을 구축했습니다.

Redhat의 Jakub Jelinek 덕분에 프로세스가 매우 간단해졌습니다.koji에서 Fedora gcc 빌드가 발견되었습니다.

필요한 버전의 최신 src rpm을 얻으세요(예:5.3.1).

rpm -qpR src.rpm기본적으로 다음을 게시하여 버전 요구 사항을 찾아 빌드 요구 사항을 결정할 수 있습니다 .

rpm -qpR gcc-5.3.1-4.fc23.src.rpm | grep -E '= [[:digit:]]'
binutils >= 2.24
doxygen >= 1.7.1
elfutils-devel >= 0.147
elfutils-libelf-devel >= 0.147
gcc-gnat >= 3.1
glibc-devel >= 2.4.90-13
gmp-devel >= 4.1.2-8
isl = 0.14
isl-devel = 0.14
libgnat >= 3.1
libmpc-devel >= 0.8.1
mpfr-devel >= 2.2.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
systemtap-sdt-devel >= 1.3

이제 지루한 부분이 나옵니다. 배포용으로 제공된 yum보다 높은 패키지는 다음에서 다운로드해야 합니다.노래, 모든 종속성 요구 사항이 충족될 때까지 프로세스를 반복적으로 반복합니다.

내가 속였어, 그런데.
나는 일반적으로 gnu 도구를 사용하여 올바른 빌드 트리를 포함하고 올바르게 배치되고 이름이 지정된 요구 사항을 사용하기 위해 rpm을 다시 패키지하므로 gmp/mpc/mpfr/isl(cloog는 더 이상 필요하지 않음)을 다운로드하여 올바른 경로에 압축을 풉니다. 새로운(비대해진) tar는 패키징(rpm) 버전과 관계없이 새로운 src rpm(스펙 파일이 약간 변경됨)으로 재구축됩니다. 제가 아는 사람은 ADA를 사용하는 사람이 없기 때문에 사양 파일에서 gnat 관련 부분을 제거하여 빌드 프로세스를 더욱 단순화하고 binutils에 대해서만 걱정하면 됩니다.
Gcc는 실제로 이전 binutils를 사용하여 빌드할 수 있으므로 급한 경우 사양 파일을 추가로 편집하여 시스템에 이미 binutils 버전이 있어야 합니다. 이로 인해 gcc가 약간 손상되지만 대부분의 경우 충분히 잘 수행됩니다.
이는 대부분의 경우에 잘 작동합니다.

업데이트 1

src rpm을 여는 가장 쉬운 방법은 아마도 yum install rpm을 실행하고 ~/rpmbuild 아래의 모든 항목에 액세스하는 것이지만 저는 더 선호합니다.

mkdir gcc-5.3.1-4.fc23
cd gcc-5.3.1-4.fc23
rpm2cpio ../gcc-5.3.1-4.fc23.src.rpm | cpio -id
tar xf gcc-5.3.1-20160212.tar.bz2
cd gcc-5.3.1-20160212
contrib/download_prerequisites
cd ..
tar caf gcc-5.3.1-20160212.tar.bz2 gcc-5.3.1-20160212
rm -rf gcc-5.3.1-20160212
# remove gnat
sed -i '/%global build_ada 1/ s/1/0/' gcc.spec
sed -i '/%if !%{build_ada}/,/%endif/ s/^/#/' gcc.spec
# remove gmp/mpfr/mpc dependencies
sed -i '/BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1/ s/.*//' gcc.spec
# remove isl dependency
sed -i '/BuildRequires: isl = %{isl_version}/,/Requires: isl-devel = %{isl_version}/ s/^/#/' gcc.spec
# Either build binutils as I do, or lower requirements
sed -i '/Requires: binutils/ s/2.24/2.20/' gcc.spec
# Make sure you don't break on gcc-java
sed -i '/gcc-java/ s/^/#/' gcc.spec

또한 선택적으로 접두사를 설정하여 릴리스 rpm을 중단하지 않고 rpm을 병렬로 설치할 수 있습니다(그러나 이름 변경 및 내부 패키지 이름의 일부 수정이 필요함). 나는 일반적으로 환경 모듈을 추가하여 필요에 따라(컬렉션 작동 방식과 유사) 이 gcc를 rpm의 일부로 로드 및 언로드할 수 있습니다(그래서 새 종속성을 추가합니다).

마지막으로 rpmbuild 트리를 생성하고 빌드해야 할 파일을 배치합니다.

yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec

업데이트 2

일반적으로 개발을 위해 "서버" 운영 체제를 사용해서는 안 됩니다. 이것이 바로 최신 gcc와 함께 이미 제공되는 Fedora를 사용하는 이유입니다. 몇 가지 특정한 요구 사항이 있지만 작업에 적합한 도구(프로덕션 애플리케이션 실행을 위한 rhel/centos, 해당 애플리케이션 개발을 위한 fedora 등)를 사용하는 것을 실제로 고려해야 합니다.

답변4

gcc 소스 빌드를 사용해 볼 수 있습니다. GCC에는 전제 조건으로 MPC, MPFR 및 GMP가 필요합니다. GCC 4.8의 경우 버전 종속성은 MPC 0.8 GMP 6.0 MPFR 2.4.2입니다. 소스 패키지를 다운로드하고 /usr/lib 아래에 모든 패키지를 설치합니다. 설치 순서는 gmp, mpfr, mpc입니다.

관련 정보