programming language/C, C++

[UBUNTU] 우분투에서 C, C++하기

눈곱만큼도모름 2025. 1. 22. 08:29
728x90
반응형

우분투에서 C 언어와 C++ 개발을 위해 필요한 준비 과정

들어가기 앞서 리눅스 터미널을 처음 접한다면, 링크 참고
https://ashton0410.tistory.com/entry/OSLinux-command-%EC%A0%95%EB%A6%AC

 

[OS][Linux] Basic command (리눅스 기본 명령어)

◎ Terminal 기초 command Ctrl + C: 현재 실행 중인 프로세스를 종료합니다. Ctrl + D: 현재 터미널 세션을 종료합니다. Ctrl + Z: 현재 실행 중인 프로세스를 일시 중지합니다. Ctrl + L: 터미널 화면을 지웁니

ashton0410.tistory.com

 

1. 컴파일러 설치

C와 C++ 코드를 컴파일하려면 GCC(GNU Compiler Collection) 또는 G++가 필요합니다. 아래 명령어를 실행하여 설치하세요.

sudo apt update
sudo apt install build-essential

build-essential
이 명령어는 Ubuntu와 같은 Debian 기반 리눅스에서 C/C++ 개발 환경을 구성하는 데 필수적인 패키지들을 설치하는 명령어입니다. 이를 통해 컴파일러와 빌드 도구를 한 번에 설치할 수 있습니다.

build-essential에 포함된 주요 구성 요소

  1. GCC (GNU Compiler Collection)
    • C와 C++ 코드를 컴파일하는 컴파일러.
    • 명령어: gcc, g++
  2. Make
    • 프로젝트 빌드 관리 도구. Makefile을 통해 컴파일 과정을 자동화.
    • 명령어: make
  3. libc6-dev
    • C 라이브러리 개발 헤더와 파일들.
  4. dpkg-dev
    • 패키지 빌드 관련 도구.

 

설치 후 컴파일러 버전을 확인하려면:

gcc --version   # C 컴파일러 버전 확인
g++ --version   # C++ 컴파일러 버전 확인

 

2. 코드 편집기

코드를 작성하려면 텍스트 편집기를 사용해야 합니다. 다음은 인기 있는 옵션들입니다:

  • Vim/Neovim: 터미널 기반 코드 편집기
    sudo apt install vim
  • VS Code: GUI 기반 IDE (사용하기 쉽고 확장 기능이 많음)공식 웹사이트에서 .deb 파일을 다운로드하거나:설치 후 "C/C++ Extension Pack"을 설치하세요.
  • sudo apt update sudo apt install wget wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo install -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/ sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' sudo apt update sudo apt install code
  • CLion: JetBrains에서 제공하는 강력한 IDE (유료, 학생 및 평가판 무료)
    # JetBrains Toolbox를 사용해 설치 가능

3. 디버깅 도구

디버깅을 위해 GDB(GNU Debugger)를 설치하세요:

sudo apt install gdb

GDB를 사용하면 코드를 단계별로 실행하면서 버그를 찾을 수 있습니다.

4. 빌드 시스템

복잡한 프로젝트에서는 빌드 시스템이 필요합니다.
학습을 위해서 설치하는 것이라면 Make로 충분합니다. 아래 자세한 설명 첨부합니다.

  • Make: 간단한 빌드 도구
    sudo apt install make
  • CMake: 현대적인 빌드 시스템
    sudo apt install cmake

1. Make

Make는 간단한 빌드 도구로, Makefile을 사용하여 컴파일 및 빌드 과정을 자동화합니다.

특징

  • 기존의 간단한 C/C++ 프로젝트에서 주로 사용됨.
  • 프로젝트 파일의 의존성을 관리하고 필요한 파일만 다시 컴파일.
  • 단순한 규칙 기반 빌드 도구.
  • 빠르고 간단하게 설정 가능.

사용 사례

  • 소규모 프로젝트.
  • 기존에 Makefile을 사용하는 프로젝트.
  • 복잡한 설정이 필요하지 않은 경우.

2. CMake

CMake는 현대적인 빌드 시스템으로, 플랫폼 간 호환성을 지원하고 복잡한 프로젝트에서 주로 사용됩니다. Make보다 더 유연하고 확장성이 높습니다.

특징

  • 여러 플랫폼(Windows, macOS, Linux)을 지원.
  • 프로젝트를 위한 설정 파일(CMakeLists.txt)을 사용.
  • Make를 포함하여 다양한 빌드 도구(예: Ninja, Visual Studio 프로젝트 파일 등)를 생성 가능.
  • 복잡한 프로젝트의 빌드 설정과 라이브러리 관리에 적합.

사용 사례

  • 크로스 플랫폼 개발.
  • 외부 라이브러리(CMake를 사용하는 프로젝트)를 빌드해야 하는 경우.
  • 중대형 프로젝트에서 더 체계적인 빌드 설정이 필요한 경우.

 

Vim에서 C와 C++ 파일의 컴파일과 실행

만약 vim사용법이 익숙지 않다면 아래 링크 학인

https://ashton0410.tistory.com/entry/OSLinux-Vim-command-%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%B9%94-%EB%AA%85%EB%A0%B9%EC%96%B4

 

[OS][Linux] Vim command (리눅스 빔 명령어)

Linux Vim(리눅스 빔)은 마우스를 쓰지 않은 상태에서 문서를 작성하는 강력한 문서편집기이다. 입력모드 i insert 현재 위치에서 편집모드로 I Insert 현재 줄 처음위치에서 a append 현재 커서 다음위치

ashton0410.tistory.com

 

1. 기본 개념

C와 C++ 코드는 컴파일러를 통해 기계어로 변환되어 실행 파일을 생성합니다. 우분투에서는 다음과 같은 컴파일러를 주로 사용합니다:

  • C 코드: gcc (GNU Compiler Collection)
  • C++ 코드: g++

컴파일 명령어

  • C 프로그램 컴파일: gcc 파일이름.c -o 출력파일이름
  • C++ 프로그램 컴파일: g++ 파일이름.cpp -o 출력파일이름

2. Vim 내부에서 컴파일과 실행

Vim은 기본적으로 텍스트 편집기이지만, 터미널 명령을 실행할 수 있으므로 컴파일실행을 Vim 내부에서 처리할 수 있습니다.

1) 터미널 명령으로 수동 실행

Vim에서 작성한 파일을 저장한 뒤, 터미널에서 컴파일 및 실행할 수 있습니다.

C 예제

1. 파일 저장 (예: example.c)

#include 
    
    int main() {
        printf("Hello, World!\n");
        return 0;
    }

2. Vim에서 파일 저장후 나가기:

:wq

3. 터미널 명령으로 컴파일:

gcc example.c -o example

4. 실행:

./example

바로 VIM에서 실행도 가능
https://ashton0410.tistory.com/entry/Vim%EC%97%90%EC%84%9C-%EB%B0%94%EB%A1%9C-C-%EC%96%B8%EC%96%B4-%EC%8B%A4%ED%96%89

 

Vim에서 바로 C 언어 실행

Vim에서 C 언어 실행하기Vim에서 C 언어 코드를 작성하고 실행하려면 컴파일과 실행 과정을 거쳐야 하는데,VIM에디터에서 나가지 않고 : 를 통해서 작업이 가능합니다.1. C 파일 저장 및 컴파일Vim에

ashton0410.tistory.com

 

ls로 확인해보면 c파일과 컴파일로 만들어진 파일을 확인 가능하다

컴파일 파일을 열면 아래와 같이 나온다.

 

2) Vim에서 매크로로 설정

컴파일과 실행 과정을 매번 수동으로 하기 번거로울 수 있습니다. Vim의 단축키 매핑을 사용하여 이 과정을 자동화할 수 있습니다.

.vimrc에 매크로 추가

~/.vimrc 파일에 아래 내용을 추가하세요:

" C 파일 컴파일 및 실행
autocmd FileType c nnoremap  :w:!gcc % -o %:r && ./%:r

" C++ 파일 컴파일 및 실행
autocmd FileType cpp nnoremap  :w:!g++ % -o %:r && ./%:r

작동 방식

  • <F5> 키를 누르면:
    • 현재 파일을 저장합니다 (:w).
    • 현재 파일을 컴파일하고 실행합니다.
    • %: 현재 파일 이름.
    • %:r: 확장자를 제외한 현재 파일 이름.

3) CMake와 연동

복잡한 프로젝트에서는 CMake를 사용해 빌드 프로세스를 관리할 수 있습니다.

1. CMakeLists.txt 생성

CMakeLists.txt 파일을 생성하고, 빌드 규칙을 정의합니다:

cmake_minimum_required(VERSION 3.10)
project(MyProject)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

add_executable(my_program main.c)

2. CMake 빌드 및 실행

mkdir build
cd build
cmake ..
make
./my_program

4) Vim에서 Make 연동

CMake를 사용하면서 Vim에서 make 명령을 실행할 수 있습니다:

nnoremap  :w:!mkdir -p build && cd build && cmake .. && make && ./my_program

3. 디버깅 (GDB 사용)

GDB로 디버깅

1. 컴파일 시 디버깅 정보를 추가:

gcc -g example.c -o example

2. GDB 실행:

gdb ./example

3. 주요 명령:

  • break main: main 함수에 브레이크포인트 설정.
  • run: 프로그램 실행.
  • step: 한 줄씩 실행.
  • print 변수명: 변수 값 출력.
  • quit: GDB 종료.

Vim과 GDB 연동

GDB플로그인을 설치하거나, 터미널 분할 화면에서 사용할 수 있습니다.
(설치하고자 하는 경우 구글검색하시면 됩니다)

이 과정을 통해 Vim에서 C/C++ 파일을 작성, 컴파일, 실행, 그리고 디버깅까지 원활하게 수행할 수 있습니다! 

 

 

C와 C++ 컴파일 명령어

컴파일 명령어는 C 및 C++ 코드 파일을 실행 가능한 바이너리로 변환하는 과정에서 중요한 역할을 합니다. 여기에서는 C와 C++에서 사용하는 주요 컴파일 명령어와 그 옵션들에 대해 설명합니다.

1. C 프로그램 컴파일: gcc

기본 명령어

gcc 파일이름.c -o 출력파일이름
  • gcc: GNU C 컴파일러.
  • 파일이름.c: 컴파일할 C 소스 파일의 이름.
  • -o 출력파일이름: 컴파일된 실행 파일의 이름을 지정합니다.
    이때 o는 output의 약자입니다.

옵션

  • -o: 출력 파일 이름을 지정합니다. 예를 들어 -o myprogrammyprogram이라는 실행 파일을 생성합니다.
  • -g: 디버깅 정보를 포함하여 컴파일합니다. 디버거(GDB)를 사용할 때 유용합니다.
    gcc -g 파일이름.c -o 출력파일이름
  • -Wall: 모든 경고 메시지를 출력합니다. 코드의 오류나 잠재적인 문제를 미리 알 수 있습니다.
    gcc -Wall 파일이름.c -o 출력파일이름
  • -std=c11: C11 표준을 사용하여 컴파일합니다. C 언어는 여러 버전이 있으며, 이 옵션을 사용하여 특정 표준을 지정할 수 있습니다.
    gcc -std=c11 파일이름.c -o 출력파일이름

예시

gcc -g -Wall -std=c11 example.c -o example

이 명령은 example.c를 C11 표준으로 컴파일하고, 디버깅 정보와 경고 메시지를 포함하여 example이라는 실행 파일을 생성합니다.

2. C++ 프로그램 컴파일: g++

기본 명령어

g++ 파일이름.cpp -o 출력파일이름
  • g++: GNU C++ 컴파일러.
  • 파일이름.cpp: 컴파일할 C++ 소스 파일의 이름.
  • -o 출력파일이름: 컴파일된 실행 파일의 이름을 지정합니다.

옵션

  • -o: 출력 파일 이름을 지정합니다.
  • -g: 디버깅 정보를 포함하여 컴파일합니다.
    g++ -g 파일이름.cpp -o 출력파일이름
  • -Wall: 모든 경고 메시지를 출력합니다.
    g++ -Wall 파일이름.cpp -o 출력파일이름
  • -std=c++17: C++17 표준을 사용하여 컴파일합니다.
    g++ -std=c++17 파일이름.cpp -o 출력파일이름

예시

g++ -g -Wall -std=c++17 example.cpp -o example

이 명령은 example.cpp를 C++17 표준으로 컴파일하고, 디버깅 정보와 경고 메시지를 포함하여 example이라는 실행 파일을 생성합니다.

3. 여러 파일을 컴파일

C 프로그램에서 여러 파일 컴파일

gcc 파일1.c 파일2.c -o 출력파일이름

여러 C 파일을 한 번에 컴파일할 수 있습니다. 예를 들어 file1.cfile2.c를 함께 컴파일하여 실행 파일을 생성하려면 위와 같이 입력합니다.

C++ 프로그램에서 여러 파일 컴파일

g++ 파일1.cpp 파일2.cpp -o 출력파일이름

4. 컴파일 과정

컴파일은 크게 3단계로 나뉩니다:

  1. 프리프로세싱: 소스 코드에서 매크로와 전처리 지시어(#include, #define 등)를 처리합니다.
  2. 컴파일: 소스 코드를 어셈블리 언어로 변환합니다.
  3. 링킹: 여러 객체 파일을 결합하여 최종 실행 파일을 만듭니다.

5. 실행 파일 실행

컴파일이 성공적으로 끝난 후, 생성된 실행 파일을 실행할 수 있습니다.

실행 명령어

./출력파일이름

예를 들어, example라는 이름의 실행 파일이 생성되었다면, 이를 실행하려면:

./example

6. 최적화 옵션

컴파일 시 성능을 높이기 위해 최적화 옵션을 사용할 수 있습니다.

  • -O0: 최적화 없이 컴파일 (디버깅에 유용)
  • -O1: 기본적인 최적화
  • -O2: 추가 최적화
  • -O3: 최대 최적화

예시

gcc -O2 example.c -o example

위 명령은 example.c를 최적화하여 컴파일합니다.

7. 라이브러리 링크

C/C++ 프로그램에서 외부 라이브러리를 사용하려면, 라이브러리를 링크해야 합니다. 예를 들어, math 라이브러리를 사용하려면:

수학 라이브러리 링크 (C, C++)

gcc 파일이름.c -lm -o 출력파일이름
g++ 파일이름.cpp -lm -o 출력파일이름

-lm은 수학 라이브러리(libm)를 링크하는 옵션입니다.

 

728x90
반응형