Centos에 여러 다른 버전의 gcc를 설치하고 싶습니다. centos 6의 gcc 기본 버전은 4.9.3입니다. 그래서 devtoolset을 사용하여 더 높은 버전의 gcc를 설치했습니다. 그런 다음 "source /opt/rh/devtoolset-5/enable"을 실행하여 더 높은 버전의 gcc로 전환했습니다. 하지만 이제 기본 gcc로 다시 전환하려면 어떻게 해야 합니까? 그런데 Centos 5에 여러 다른 버전의 gcc를 설치하기 위한 솔루션이 있습니까?
답변1
gcc
배포되는 버전은 CentOS 6
실제로 4.4.7입니다.
gcc
소스에서 설치하거나 컴파일하여 원하는 만큼 많은 버전을 설치할 수 있습니다 .devtoolset-#
yum
첫 번째 방법이 가장 간단합니다. 설치가 devtoolset
완료 되었는지 확인하세요 scl repo
. 설치하지 않은 경우:
yum install centos-release-scl
gcc version
그런 다음 다음 명령을 사용하여 원하는 대로 설정할 수 있습니다 . 이 예에서는 5를 사용하고 쉘이 다음과 같다고 가정합니다 bash
.
scl enable devtoolset-5 bash
6으로 변경하려는 경우:
scl enable devtoolset-6 bash
bash
기본값으로 다시 변경하려면 쉘이 다음 중 하나라고 가정하십시오.
bash
source ~/.bash_profile
첫 번째는 새 셸 세션을 시작하고 .NET 의 ~/.bashrc
변수/명령을 사용하여 설정합니다 ~/.bash_profile
. (개발 도구 세트가 활성화되지 않았습니다).
scl enable devtoolset-5 bash
예를 들어, 로그인 시 버전이 버전 중 하나로 설정되도록 ~/.bashrc
or 를 넣을 수도 있습니다 . 이 방법을 사용하는 경우 시스템 기본값으로 돌아가려면 또는 의 줄을 주석 처리 한 다음 각각 또는 를 실행합니다 . 그러면 이러한 쉘 초기화 파일 중 하나에 있는 모든 내용( 주석 처리된 명령 제외)이 포함된 새 쉘 세션이 시작됩니다 . 유일한 단점은 쉘 세션이 새 것이기 때문에 명령을 통해 설정한 모든 변수가 더 이상 존재하지 않는다는 것입니다.~/.bash_profile
gcc
devtoolset
~/.bashrc
~/.bash_profile
bash
source ~/.bash_profile
scl enable
export
답변2
저는 Linux 전문가는 아니지만 scl
수년간의 Linux 경험을 갖고 있습니다.
이렇게 하면 scl enable devtoolset-9 bash
새 bash가 시작되고 새 환경이 설정됩니다.
다음을 통해 새 프로세스를 볼 수 있습니다 bash
.
- 먼저 새 쉘을 시작하고 다음을 통해 쉘의 pid를 확인하십시오.
echo $$
- 둘째, 새로운 개발 도구 세트를 활성화합니다.
scl enable devtoolset-9 bash
- 그런 다음 pid를 다시 확인하십시오.
echo $$
- 보너스 포인트의 경우
pstree -p
새 bash pid에 이전 bash 프로세스의 상위 pid가 있는지 확인할 수 있습니다.
따라서 최종적으로 귀하의 질문에 답하려면 기본 컴파일러로 돌아가려면 g++
현재 프로세스를 종료하면 됩니다 bash
. 그러면 이전 g++ 컴파일러가 있어야 합니다.
~/.bashrc에 대한 중요 참고 사항:
- 어떤 방식으로든 솔루션을 수정하면 내 솔루션이 작동하지 않습니다.
~/.bashrc
- 즉, 거기에 뭔가가 있다면 언제든지 할 수 있습니다
scl enable devtoolset-9
- 다른 솔루션에서는 ~/.bashrc에 대해 더 자세히 설명하고 이를 수정하거나 수정 취소하는 방법을 설명하므로 이 페이지의 다른 솔루션을 참조하세요.
답변3
PATH
예를 들어 파일 크기는 얼마입니까 /opt/rh/devtoolset-5/enable
? 등 일부 환경 변수를 변경하는 문제일 수도 있습니다 . 그것을 살펴보고, 그것이 무엇인지 확인하고, 사용하려는 이전 컴파일러에 맞게 조정할 수 있습니까? 찾아야 할 확실한 사항은 새 컴파일러 파일이 설치된 디렉토리 이름(이전 컴파일러에 해당하는 경로 이름으로 변경)과 버전 번호입니다. 그 밖에 무엇이 있을지 궁금합니다.