install gcc & gcc options

2022. 5. 25. 19:07Programing Language/Linux

 

 

 

#install gcc

 

먼저 gcc가 설치 되어있는지 확인하기 위해 gcc를 명령해줍니다

설치가 되어있지 않아 설치를 해주어야 됩니다.

sudo apt install gcc를 명령하여 설치해줍니다

 

설치가 완료되면 gcc --version을 다시 입력하여 버전을 확인해줍니다


# gcc version upgrade

 

1. 해당버전이 저장되어 있는 저장소 추가

sudo apt install software-properties-common -> sudo add-apt-repository ppa:ubuntu-toolchain-r/test

[빨간색으로 표시한 부분에서 gcc version 확인이 가능함]

 

3. 저장소 업데이트

sudo apt-get update

 

4. 원하는 버전 설치

sudo apt-get install gcc-7/gcc-8/gcc-9


# test gcc

간단한 테스트를 위해 test 디렉토리에 vi editor을 이용하여 간단한 test.c 파일을 생성하였습니다

 

gcc -o test test.c을 명령하여 test object 파일이 생성되었고 실행시켜줍니다

 


#gcc options

 

[ GCC 전역 옵션]

옵션 설명
-E 전처리 과정 화면에 출력
-S 어셈블리 파일 생성
-c 오브젝트 파일 생성
-v 컴파일 과정 화면에 출력
--save-tmps 컴파일 시 생성되는 중간 파일 저장
-da 컴파일 과정에서 생성되는 중간 코드 생성(RTL 파일 등 생성)

 

[ 전처리기(cpp0) 옵션]

옵션 설명
-l[패스] 헤더 파일을 탐색할 디렉토리 지정 (ex_: -l/opt/include)
-include[헤더 파일 패스] 해당 헤더 파일을 모든 소스 내 추가 (ex_: -include /root/my.h)
-D[매크로] 외부에서 #define 지정 (ex_: -DDEBUF)
-D[매크로]=[매크로 값] 외부에서 해당 매크로를 정의하고 값을 지정 (ex_: -DDEBUG=1)
-U[매크로] 외부에서 #endef 지정 (ex_ -UDEBUG)
-M 또는 -MM make 기술 파일을 위한 소스 파일의 종속 항목 출력
-nostdinc 표준 C 헤더 파일을 include하지 않음
-C 전처리 과정에서 주석을 제거하지 않음
-Wp,[옵션 리스트] 옵션 리스트를 전처리기에 바로 전달

 

[ C컴파일러(cc1) 옵션]

- C 언어 옵션 -
옵션 설명
-ansi ANSI C 문법으로 문법 검사
-std=[c 표준] 지정한 C 표준으로 문법 검사 (표준:c89, c99, gnu89, gnu99 등)
-traditional K&R C문법으로 문법 검사
-fno-asm asm, inline, typeof 키워드를 사용하지 않음(gnu89 문법 기준)
- 경고 옵션 -
-Wall -W 모든 경고 메시지 출력
-w 모든 경고 메시지 제거
-Werror 모든 경고를 오류로 취급하여 컴파일 중단
-pedantic C89 표준에서 요구하는 모든 경고 메시지를 표시
-pedantic-errors C89 표준에서 요구하는 모든 오류 메시지를 표시
-Wtraditional ANSI C와 K&R C 간에 서로 다른 결과를 가져올 수 있는 부분이 있다면 경고
- 최적화 옵션 -
-O0 아무런 최적화를 수행치 않음
-O1 또는 -O 최적화 레벨 1 수행
-O2 최적화 레벨 2 수행
-O3 최적화 레벨 3 수행
-O4 사이즈 최적화 수행
- 디버깅 옵션 -
-g 바이너리 파일에 디버깅 정보 삽입
-pg 프로파일을 위한 코드 삽입

 

[ 어셈블리(as) 옵션]

옵션 설명
-Wa,[옵션 리스트] 어셈블러에게 옵션 리스트를 바로 전달
-Wa,-al 어셈블된 코드와 인스트럭션을 보임
-Wa,-as 정의된 심볼을 보임

 

[ 링크(ld) 옵션]

옵션 설명
-L[패스] 라이브러리 탐색 디렉토리 지정 (ex_: -L/opt/lib)
-l[라이브러리 이름] 해당 라이브러리를 링크 (ex_: -lm)
-shared 공유 라이브러리를 우선하여 링크
-static 정적 라이브러리를 우선하여 링크
-nostdlib 표준 C 라이브러리를 사용하지 않음
-Wl,[옵션 리스트] 옵션 리스트를 링크에 바로 전달

 

reference check : https://devanix.tistory.com/169?category=27199

'Programing Language > Linux' 카테고리의 다른 글

related to root commands  (0) 2022.05.26
about yum  (0) 2022.05.26
특수 권한 [SETUID, SETGID, STICKY BIT]  (0) 2022.05.12
whereis & $PATH & background  (0) 2022.04.11
Linux commands related to process  (0) 2022.04.09