ArchLinux에서 gcc의 기본 버전을 일시적으로 변경하는 방법

ArchLinux에서 gcc의 기본 버전을 일시적으로 변경하는 방법

ArchLinux가 설치되어 있고 gcc 버전이 2개 있습니다. 기본값("gcc")은 "gcc(GCC) 7.1.1"이고 "gcc-5"는 "gcc-5(GCC) 5.4.0"입니다.

gcc(및 g++) 버전이 5 이하인지 확인하기 위해 일부 프로젝트를 빌드하는 데 문제가 있습니다. (보다 구체적으로 nvidia에서 cuda-8.0의 공식 실행 파일을 설치하거나 사용된 프로젝트 cuda 라이브러리 및 해당 헤더 파일을 빌드합니다.)

내가 원하는 것은 데비안과 유사한 배포판의 "update-alternatives" 솔루션과 유사하게 내 환경에서 gcc의 기본 버전을 (일시적으로) 변경하고 완료되면 다시 설정하는 것입니다.

내 /usr/bin에 있는 gcc 및 g++ 관련 바이너리에 대한 정보는 다음과 같습니다.

$ ls -l | grep gcc
lrwxrwxrwx 1 root root        3 Jun 30 16:49 cc -> gcc
-rwxr-xr-x 3 root root   997840 Jun 30 16:49 gcc
-rwxr-xr-x 3 root root   873352 Jul 11  2016 gcc-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 gcc-ar
-rwxr-xr-x 2 root root    25544 Jul 11  2016 gcc-ar-5
-rwxr-xr-x 2 root root   875720 Jul 11  2016 gccgo-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 gcc-nm
-rwxr-xr-x 2 root root    25512 Jul 11  2016 gcc-nm-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 gcc-ranlib
-rwxr-xr-x 2 root root    25512 Jul 11  2016 gcc-ranlib-5
-rwxr-xr-x 3 root root   997840 Jun 30 16:49 x86_64-pc-linux-gnu-gcc
-rwxr-xr-x 3 root root   873352 Jul 11  2016 x86_64-pc-linux-gnu-gcc-5
-rwxr-xr-x 3 root root   873352 Jul 11  2016 x86_64-pc-linux-gnu-gcc-5.4.0
-rwxr-xr-x 3 root root   997840 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-7.1.1
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-ar
-rwxr-xr-x 2 root root    25544 Jul 11  2016 x86_64-pc-linux-gnu-gcc-ar-5
-rwxr-xr-x 2 root root   875720 Jul 11  2016 x86_64-pc-linux-gnu-gccgo-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-nm
-rwxr-xr-x 2 root root    25512 Jul 11  2016 x86_64-pc-linux-gnu-gcc-nm-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-ranlib
-rwxr-xr-x 2 root root    25512 Jul 11  2016 x86_64-pc-linux-gnu-gcc-ranlib-5

답변1

총 길이 DR:sudo ln -s $(which gcc-5) /usr/local/bin/gcc; hash -r

기본적으로 gcc 바이너리는 다음 위치에 있습니다./usr/bin

경로를 확인해 보면 이것이 /usr/local/bin가장 먼저 나오는 것을 알 수 있습니다.

echo $PATH | tr ':' '\n'
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
. . .

따라서 gcc-5( )가 설치되어 있다고 가정하면 다음과 같은 yaourt --noconfirm -S gcc5심볼릭 링크를 생성하여 이를 "기본" 버전으로 만들 수 있습니다 ./usr/local/bin

sudo ln -s $(which gcc-5) /usr/local/bin/gcc
sudo ln -s $(which g++-5) /usr/local/bin/g++

다음으로, 이전에 기억된 gcc 위치를 제거하기 위해 gcc를 다시 해시해야 합니다.

hash -r

gcc의 원래 "기본" 버전을 복원하려면 간단히 심볼릭 링크를 삭제하고 다시 해시하면 됩니다.

sudo rm /usr/local/bin/gcc /usr/local/bin/g++
hash -r

관련 정보