티스토리 뷰
1. gcc 설치
2. C 파일 생성
3. 컴파일
1. gcc 설치
gcc는 유닉스 계열(리눅스)의 시스템에서 주로 사용하는 C/C++ 언어 개발 도구이다. C/C++ 언어로 된 파일을 컴파일하거나, 각종 응용 프로그램 개발에 사용한다.
먼저 gcc가 설치되어 있는지 확인하려면 아래 명령어를 입력한다.
$ gcc --version
이때 gcc의 버전이 나오지 않는다면, 설치를 해주어야 한다.
gcc 설치 명령어는 아래와 같다.
$ sudo apt-get install gcc
gcc가 정상적으로 설치되었다면 gcc 버전이 아래와 같이 나타난다.

2. C 파일 생성

모든 프로그래밍 언어를 배울 때 가장 먼저 해보는 것이 있다. 바로 "Hello world"를 출력하는 것이다.
첫 줄에 #include <stdio.h>라는 문구가 있는데, 이는 C 표준 라이브러리이다.
stdio.h는 Standard Input Output Header의 약자이다.
C 언어 함수는 표준함수가 있고, 개발 툴에서 제공하는 함수가 있다. 여러 가지 부류가 있고 특성 별로 나누어 lib 파일로 코드를 제공하고 헤더파일로 선언할 수 있다.
main()이라는 함수명 앞에 int가 있는데, 이는 정수형을 반환하는 함수라는 뜻이다. 이 함수는 정수 0을 반환한다.
ISO C 라이브러리 헤더
파일명 | 설명 |
<assert.h> | assert 매크로, 논리오류 및 디버깅 시 오류 형 등을 지원 |
<complex.h> | 복소수 처리용 세트 |
<ctype.h> | 초기의 대-소 문자 변환 함수 제공 |
<errno.h> | 함수에서 발생하는 오류 형태 변환 등의 오류 처리 |
<fenv.h> | 부동소수점 환경 제어 |
<float.h> | 부동소수점 특성 정의 (두 숫자 사이의 최소 차이(_EPSILON), 숫자의 최대 자리수(_DIG), 숫자의 범위의 표현(_MIN, _MAX)) |
<inttypes.h> | 정수형 변수의 정확한 변환 |
<iso646.h> | ISO 646 문자열 처리 |
<limits.h> | 정수형의 특성 정의, 정수 숫자 범위(_MIN, _MAX) |
<locale.h> | 로케일 관련 상수, 국제어 처리를 위한 적용 |
<math.h> | 수학 함수 |
<setjmp.h> | setjmp와 longjmp 매크로 선언 |
<signal.h> | 다양한 예외 처리 제어 |
<stdarg.h> | 아규먼트 변수 처리 (va_start, va_arg, va_end 함수 등) |
<stdbool.h> | 논리 변수 |
<stdint.h> | 정수형 변수의 각종 정의/선언 |
<stddef.h> | 유용한 형과 매크로 정의/선언 |
<stdio.h> | C 언어의 입출력 제공 (printf 등) |
<stdlib.h> | 라이브러리 |
<string.h> | 문자열 조작 |
<tgmath.h> | 수학 함수에서 일반 형 변환 관련 |
<time.h> | 시간과 날짜 변환 함수 |
<wchar.h> | 국제어 등의 처리를 위한 확장 문자 (문자열 처리) |
<wctype.h> | 확장 문자 처리 |
3. 컴파일
아래 명령어로 C 파일을 컴파일 할 수 있다.
$ gcc [컴파일 전 파일명] -o [컴파일 후 파일명]

"hello world"가 정상적으로 출력된 것을 확인하였다.
gcc 컴파일
명령어 | 설명 |
gcc 파일명(*.c) | Default로 out 파일이 생성됨(*.out 이라는 파일이 생성되며 실행 가능) |
gcc -c 파일명(*.c) | 오브젝트 파일을 생성함(*.o라는 오브젝트 파일이 생성됨) |
gcc -c 오브젝트파일명(*.o) 파일명(*.c) gcc -o 실행파일명(*.out) 오브젝트_파일명(*.o) |
실행 파일을 만듦 |
gcc -o 실행파일 파일명(*.c) | 실행 파일을 만듦 (바로 위 2줄을 간략화한 것) (소스 파일 컴파일 > 오브젝트 파일 생성 > 실행 파일 생성 > 오브젝트 파일 삭제) |
gcc 옵션
옵션 | 설명 |
-Wall | 모든 모호한 코딩에 대해 경고를 보냄 |
-W | 합법적이지만 모호한 코딩에 대해 경고를 보냄 |
-W -Wall | 아주 사소한 모호성에 대해서도 경고를 보냄 |
-O2 | 최적화 레벨 2로 설정 (대부분의 최적화를 시도) |
-E | 전처리 과정의 결과를 화면에 보이는 옵션 (전처리 과정 중 발생한 오류 검증) |
-S | cc1으로 전처리된 파일을 어셈블리 파일로 컴파일까지만 수행하고 멈춤 (*.s) |
-c | as에 의한 어셈블까지만 수행하고 링크는 수행하지 않음 |
-v | gcc가 컴파일을 어떤 식으로 수행하는지 화면에 출력 |
--save-temps | 컴파일 과정에서 생성되는 중간 파일인 전처리 파일(*.i)과 어셈블리 파일(*.s)을 지우지 않고, 현재 디렉토리에 저장 (오류 분석에 사용) |
'C언어' 카테고리의 다른 글
[C언어] 변수 선언 (0) | 2022.07.18 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Browser Object Model
- window 객체
- Document Object Model
- int
- Screen 객체
- long
- bom
- keyword
- location 객체
- 변수
- DOM
- Char
- gcc
- short
- 리액트 #React #props #state #javascript
- c언어
- stdio.h
- 컴파일
- History 객체
- 키워드
- 자료형
- Navigator 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함