현재 버전 확인하기
$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
컴파일러 설치하기
$ sudo apt update
$ sudo apt install make
$ sudo apt install build-essential
$ sudo apt install g++-multilib
$ sudo apt install gdb
▷ build-essential
- GCC와 make를 포함한 여러 빌드 필수 패키지를 설치합니다.
▷ g++-multilib (필요 시 gcc-multilib도 설치해 주세요)
- 32비트와 64비트 컴파일을 지원하기 위해 설치합니다. (Ubuntu 16.04 이후 기본 컴파일 옵션은 64비트입니다.)
- 32비트 컴파일 옵션: -m32 (ex: gcc -m32 -o test test.cc)
- 32비트 컴파일을 위해 libc6-dev-i386을 설치해 줘야 할수도 있습니다. ($ sudo apt install libc6-dev-i386)
위처럼 하나씩 설치해도 되지만 한번에 설치하셔도 됩니다.
$ sudo apt update
$ sudo apt install make build-essential g++-multilib gdb -y
특정 버전 컴파일러 설치하기
$ gcc-8 --version
zsh: command not found: gcc-8
$ sudo apt install gcc-8 g++-8 -y
...
$ gcc-8 --version
gcc-8 (Ubuntu 8.4.0-3ubuntu2) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
시스템에 컴파일러가 여러 개의 버전이 설치된 경우 기본 컴파일러 설정하기
여러 버전의 컴파일러가 설치되어 있는 경우 특정 버전을 기본 컴파일러로 설정할 수 있습니다.
"update-alternatives" 명령어는 여러 개의 패키지에 대해서 한 개의 심볼릭 링크로 관리할 수 있게 해 줍니다.
Usage: update-alternatives [<option> ...] <command> | |
Commands | Description |
--install <link> <name> <path> <priority> [--slave <link> <name> <path>] ... | add a group of alternatives to the system. |
--remove <name> <path> | remove <path> from the <name> group alternative. |
--remove-all <name> | remove <name> group from the alternatives system. |
--auto <name> | switch the master link <name> to automatic mode. |
--display <name> | display information about the <name> group. |
--query <name> | machine parseable version of --display <name>. |
--list <name> | display all targets of the <name> group. |
--get-selections | list master alternative names and their status. |
--set-selections | read alternative status from standard input. |
--config <name> | show alternatives for the <name> group and ask the user to select which one to use. |
--set <name> <path> | set <path> as alternative for <name>. |
--all | call --config on all alternatives. |
<link> is the symlink pointing to /etc/alternatives/<name>. (e.g. /usr/bin/pager) | |
<name> is the master name for this link group. (e.g. pager) | |
<path> is the location of one of the alternative target files. (e.g. /usr/bin/less) | |
<priority> is an integer; options with higher numbers have higher priority in automatic mode. | |
Options: --altdir <directory> change the alternatives directory. --admindir <directory> change the administrative directory. --log <file> change the log file. --force allow replacing files with alternative links. --skip-auto skip prompt for alternatives correctly configured in automatic mode (relevant for --config only) --quiet quiet operation, minimal output. --verbose verbose operation, more output. --debug debug output, way more output. --help show this help message. --version show the version. |
현재 시스템에 설치되어 있는 컴파일러를 확인해 보기 위해서는 --list 옵션을 사용합니다.
$ update-alternatives --list gcc
/usr/bin/gcc-7
/usr/bin/gcc-8
/usr/bin/gcc-9
/usr/bin/gcc-10
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 700
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 800
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 900
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 900
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 1000
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 1000
위 명령어를 아래처럼 하나의 명령어로 실행할 수 있습니다.
(매뉴얼상으로는 그런데 저는 에러가 나서 위처럼 각각 설치를 해서 사용합니다)
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 1000 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 900 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700 --slave /usr/bin/g++ g++ /usr/bin/g++-7 --slave /usr/bin/gcov gcov /usr/bin/gcov-7
설치하고 난 후 컴파일러 버전을 변경하고 싶은 경우에는 "--config" 옵션을 사용합니다.
$ sudo update-alternatives --config gcc
대체 항목 gcc에 대해 (/usr/bin/gcc 제공) 4개 선택이 있습니다.
선택 경로 우선순� 상태
------------------------------------------------------------
* 0 /usr/bin/gcc-10 1000 자동 모드
1 /usr/bin/gcc-10 1000 수동 모드
2 /usr/bin/gcc-7 700 수동 모드
3 /usr/bin/gcc-8 800 수동 모드
4 /usr/bin/gcc-9 900 수동 모드
현재 선택[*]을 유지하려면 <엔터>를 누르고, 아니면 선택 번호를 입력하시오:
$
Ubuntu 20.04에 GCC 11 설치하기
위와 같은 방법으로 gcc-11로 설치하려고 할 경우 아래와 같은 오류가 발생할 수 있습니다.
(Ubuntu 22.04에서는 오류가 발생하지 않습니다. Ubuntu 20.04 기본 컴파일러는 GCC 11입니다)
$ sudo apt install gcc-11 g++-11
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
E: gcc-11 패키지를 찾을 수 없습니다
E: g++-11 패키지를 찾을 수 없습니다
저런 경우에는 apt 리스트에 등록이 되어 있지 않아서 발생합니다.
PPA를 등록해서 최신 버전을 설치한 후 컴파일러를 설치합니다.
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
Toolchain test builds; see https://wiki.ubuntu.com/ToolChain
더 많은 정보: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
[ENTER]을 눌러 진행하거나 Ctrl-c를 눌러 추가하는것을 취소합니다.
...
$ apt-cache search gcc-11
gcc-11 - GNU C compiler
gcc-11-base - GCC, the GNU Compiler Collection (base package)
gcc-11-doc - Documentation for the GNU compilers (gcc, gobjc, g++)
gcc-11-hppa64-linux-gnu - GNU C compiler (cross compiler for hppa64)
gcc-11-locales - GCC, the GNU compiler collection (native language support files)
gcc-11-multilib - GNU C compiler (multilib support)
gcc-11-offload-amdgcn - GCC offloading compiler to GCN
gcc-11-offload-nvptx - GCC offloading compiler to NVPTX
gcc-11-plugin-dev - Files for GNU GCC plugin development.
gcc-11-source - Source of the GNU Compiler Collection
gcc-11-test-results - Test results for the GCC test suite
lib32gcc-11-dev - GCC support library (32 bit development files)
libgcc-11-dev - GCC support library (development files)
libx32gcc-11-dev - GCC support library (x32 development files)
lib64gcc-11-dev - GCC support library (64bit development files)
$
$ sudo apt update
$ sudo apt install gcc-11 g++-11 -y
최신 버전 컴파일러를 설치했으면 다시 컴파일러 대안을 설정합니다.
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 1100 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
참고 사이트
- 하나의 심볼릭 링크로 여러 패키지 관리
- GCC 버전과 C++ 버전 매칭
- Ubuntu 22.04/20.04 LTS에 GCC(build-essential) 설치 - LinuxCapable
'Programming > C++' 카테고리의 다른 글
glibc 버전을 확인하려면... (1) | 2023.10.26 |
---|---|
ARM 크로스 컴파일(Cross Compile) (0) | 2023.05.26 |
리눅스 C++ 공유라이브러리 만들기 (0) | 2022.09.06 |
GCC 버전과 C++ 버전 매칭 (0) | 2022.04.22 |
ldconfig (0) | 2022.04.17 |