본문 바로가기
Programming/C++

C/C++(gcc/g++) 컴파일러(Compiler) 설치

by 드로니뚜벅이 2022. 4. 28.

현재 버전 확인하기

$ 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

 

참고 사이트

 

'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