rhel 6 x86_64에 최신 gcc 설치


13

gcc 버전 4.4.7의 RHEL 6 서버가 있습니다. gcc 버전을 업데이트하고 싶었습니다 (현재 버전은 4.8이라고 생각합니다). Yum 업데이트가 작동하지 않습니다. 또한 CentOS에서 비슷한 질문에 대한 SO 답변 이 작동하지 않습니다. 허용 된 답변의 메소드를 따랐으며 출력은 "1.1-devtools-6 테스트를위한 저장소 데이터를 가져 오는 중 오류가 발생했습니다. 저장소를 찾을 수 없습니다"입니다. 또한 CentO의 방법을 따라야하는지 잘 모르겠습니다.

RHEL 6 x86_64 서버에서 gcc를 업데이트 한 사람이 있습니까?


이 리포지토리에서 설치하려고 했습니까? hop5.in/yum/el6/repoview/gcc.html . 4.8.2의 바이너리 빌드입니다. 설치하려면 6.4 CentOS에 있어야 할 수도 있습니다. 문제가 될 수 있습니다.
slm

소스에서 설치하는 것이 옵션입니까?
mkc

예 필요한 경우 소스에서 설치할 수 있습니다.
rivu

좋은 질문. downvoter는 누구입니까? :(
Otheus

hop5.in은 더 이상 유효한 el6 저장소가 아닙니다. @slm
Otheus

답변:


4

가장 쉬운 방법은 YUM 저장소를 통해 제공되는 이진 빌드를 사용하는 것입니다. 그러한 옵션 중 하나는 hop5.in 저장소 를 사용하는 입니다. 구체적으로이 페이지 : gcc-다양한 컴파일러 (C, C ++, Objective-C, Java 등) . CentOS 6.3 또는 6.4에서 작동하는 4.8.2를 제공합니다. 이전에 업데이트를 수행 할 수 있습니다.

$ sudo yum update

다른 옵션은 Developer Toolset , 특히 Scientific Linux에서 제공하는 번들 버전을 사용하는 것입니다.

설치 지침에 따라 기본적으로 다음 두 단계를 수행합니다.

리포지토리 추가
$ 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
devtoolset 설치
$ sudo yum install devtoolset-2

업데이트 # 1

Yhop 저장소의 hop5.in이 제거 된 것으로 보이므로 유일한 강조는 위에서 강조 표시된 devtoolset 메소드를 사용하는 것입니다.

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


3
"오류 : 실패한 종속성 : cpp = 4.8.2-8.el6은 gcc-4.8.2-8.el6.x86_64에 필요합니다."라는 첫 번째 링크에서 다운로드 한 rpm을 설치하려고했습니다. 개발자 툴셋의 경우 " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… "라고 표시됩니다 . [Errno 14] PYCURL 오류 22- "요청한 URL에서 오류를 반환했습니다 : 404를 찾을 수 없음". 문제는 링크에서 6 대신 6 대신 6 서버인데 문제를 해결하는 방법을 모르겠습니다
rivu

hop.in은 더 이상 당신이 생각하는 것을 가지고 있지 않습니다.
Otheus

1
추가 단계 필요 :에서 cern 키 다운로드 및 가져 오기 http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. 사이트에 https가없는 것이 좋습니다. scilinux로가는 길. 당신이 그것을 (tmp 디렉토리 또는 whever)를 다운로드 한 후, 그것을 가져 rpm --import RPM-GPG-KEY-cern다음yum install.
Otheus

@Otheus-고마워, repos가 이와 같은 먼지를 물었을 때 싫어, 웹간 8-)의 많은 내용을 망칠 수 있습니다.
slm

1
devtoolset-2-gcc적어도 (나에게는) 280 개의 패키지와 575 MB의 다운로드에 비해 12 개의 패키지와 35 MB 다운로드가 설치되어 있다고 언급 할 가치 가 yum install devtoolset-2있습니다.
miken32


2

4.7.x부터 5.3.1 이후로 여러 버전의 rhel6 용 최신 gcc 버전을 만들었습니다.

Redhat의 Jakub Jelinek fedora gcc 빌드 덕분에 프로세스가 매우 쉽습니다.

필요한 버전 (예 : 5.3.1 )에 대한 최신 src rpm을 가져 오십시오 .

기본적으로 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

이제 지루한 부분이 있습니다-배포판을 koji 에서 다운로드 해야하는 yum보다 yum보다 높은 버전의 패키지는 모든 종속성 요구 사항이 충족 될 때까지 프로세스를 반복적으로 반복합니다.

나는 속임수를 쓴다.
나는 일반적으로 gnu 기능을 사용하여 올바르게 배치하고 명명 된 요구 사항을 사용하여 올바른 빌드 트리를 포함하도록 rpm을 다시 패키지하여 gmp / mpc / mpfr / isl (cloog가 더 이상 필요하지 않음)을 다운로드하여 올바른 경로로 가져옵니다. (부풀린) tar는 패키지 (rpm) 버전에 의존하지 않고 새로운 src rpm (사양 파일을 약간 변경 함)으로 다시 빌드됩니다. ADA를 사용하는 사람이 아무도 없기 때문에 specfile에서 gnat과 관련된 부분을 제거하고 빌드 프로세스를 단순화하여 binutils 만 걱정할 수 있습니다.
Gcc는 실제로 구형 binutils로 빌드 할 수 있으므로 서두르면 시스템에 이미 존재하는 binutils 버전을 요구하도록 스펙 파일을 추가로 편집하십시오. 이로 인해 gcc가 약간 뭉개지지만 대부분 제대로 수행됩니다.
이것은 대부분 잘 작동합니다.

업데이트 1

src rpm을 여는 가장 간단한 방법은 아마도 yum 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이 distro rpm을 깨지 않고 나란히 설치되도록 접두어를 선택할 수도 있습니다 (그러나 이름을 변경하고 내부 패키지 이름을 일부 수정해야 함). 필자는 일반적으로 환경 모듈을 추가하여 rpm의 일부로 필요한 (컬렉션 작동 방식과 유사하게)이 gcc를로드하고 언로드 할 수 있습니다 (따라서 새로운 종속성을 추가합니다).

마지막으로 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와 함께 제공되는 페도라를 사용하는 것입니다. 특정 요구 사항이 있지만 프로덕션 응용 프로그램을 실행하기 위해 rhel / centos, 해당 응용 프로그램을 개발하기 위해 fedora 등 작업에 적합한 도구 사용을 고려해야합니다.


다운 투표를하는 이유는 정중합니다.
Dani_l

0

여기 사람들이 내가 한 일입니다 (처음부터 컴파일). 다른 답변에 대한 불쾌감 나는 그것이 효과가 있다고 확신하지만 GCC는 특히 보안에 큰 문제이므로 원본 및 공식 소스에서 컴파일하는 것을 선호합니다.

yum -y install gmp-devel mpfr-devel libmpc-devel glibc-devel glibc-devel.i686 zip unzip jar
wget http://mirrors.kernel.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz
tar -zxvf gcc-5.5.0.tar.gz
cd gcc-5.5.0
./configure
make
make install
yum remove gcc
rm -rf /usr/bin/gcc
rm -rf /usr/bin/c++
rm -rf /usr/bin/cc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.5.0 /usr/bin/gcc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-c++ /usr/bin/c++
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc /usr/bin/cc

출처 : http://realtechtalk.com/GCC_5_on_Centos_6_How_To_Install-1965-articles


보안은 큰 문제이지만 비 HTTPS 위치에서 설치하는 경우 :)?
dhag

당시 mirrors.kernel.org 사이트에서 SSL을 활성화하지 않았지만 kernel.org를 신뢰할 수 없다면 더 큰 문제가 있다고 생각합니다. :)
Areeb Soo Yasir

-1

gcc 소스 buid를 시도 할 수 있습니다. GCC는 MPC, MPFR 및 GMP를 전제 조건으로 필요로합니다. . 설치 순서는 gmp, mpfr, mpc입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.