티스토리 뷰

1. gcc 설치

2. C 파일 생성

3. 컴파일


1. gcc 설치

gcc는 유닉스 계열(리눅스)의 시스템에서 주로 사용하는 C/C++ 언어 개발 도구이다. C/C++ 언어로 된 파일을 컴파일하거나, 각종 응용 프로그램 개발에 사용한다.

 

먼저 gcc가 설치되어 있는지 확인하려면 아래 명령어를 입력한다.

$ gcc --version

이때 gcc의 버전이 나오지 않는다면, 설치를 해주어야 한다.

 

gcc 설치 명령어는 아래와 같다.

$ sudo apt-get install gcc

 

gcc가 정상적으로 설치되었다면 gcc 버전이 아래와 같이 나타난다.

[그림 1] gcc 버전 확인

 

 

2. C 파일 생성

[그림 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 [컴파일 후 파일명]

 

[그림 3] hello world 출력 확인

"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
«   2024/09   »
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
글 보관함