Try to be the expert.

Ainsetin's Hacking & PS & Math

Hacking

linux gcc 사용법을 알아보자!

Ainsetin 2020. 4. 28. 10:21


1) gcc 파일명(*.c) : Default로 out 파일이 생성된다. (ex a.out)
2) gcc -c 파일명(*.c) : 오브젝트 파일을 생성한다. 3) gcc -c 오브젝트_파일명(*.o) 파일명(*.c)
+ gcc -o 실행파일명(*.out) 오브젝트_파일명(*.o)
4) gcc –o 실행파일명(*.out) 파일명(*.c) : 실행 파일을 만든다. (3번을 한줄
로...)

-------------------------------------------------------------------------- 
1. -Wall 옵션 : 모든 모호한 코딩에 대해서 경고를 보내는 옵션
2. -W 옵션 : 합법적이지만 모호한 코딩에 대해서 경고를 보내는 옵션
3. -W -Wall 옵션 : 아주 사소한 모호성에 대해서도 경고가 발생
4. O2 옵션 : 최적화 레벨 2로 설정. (대부분의 최적화를 시도)
5. -E 옵션 : 전처리 과정의 결과를 화면에 보이는 옵션
(전처리과정 중 발생한 오류를 검증)
※ enhanced Tip: --save-temps 옵션
6. -S 옵션 : cc1으로 전처리된 파일을 어셈블리 파일로
컴파일까지만 수행하고 멈춘다. (*.s)
7. -c 옵션 : as에 의한 어셈블까지만 수행하고 링크는 수행하지 않는다. 8. -v 옵션 : gcc가 컴파일을 어떤 식으로 수행하는지를 화면에 출력한다. 9. --save-temps 옵션 : 컴파일 과정에서 생성되는 중간 파일인 전처리 파일
(*.i)과 어셈블리 파일(*.s)을 지우지 않고, 현재 디렉토리에 저장한다. (오류
분석에 사용)

-M 옵션 : 해당 소스 파일의 의존성을 GNU Make 의존성 규칙에 맞추어 출
력한다. 시스템 헤더 파일들도 포함된다. --> gcc -M hello.c
이를 실행한 결과는 이렇다. hello.o: hello.c f:/lang/gcc/usr/include/stdio.h \
f:/lang/gcc/usr/include/sys/cdefs.h \
f:/lang/gcc/usr/include/sys/gnu/cdefs.h \
f:/lang/gcc/usr/include/features.h
f:/lang/gcc/usr/include/sys/_types.h \
f:/lang/gcc/usr/include/machine/_types.h \
f:/lang/gcc/usr/include/386/_types.h
---------------------------------------------------------------
-MM 옵션 : -M 옵션과 비슷한데, 시스템 헤더 파일은 제외한다. --> gcc –MM hello.c
--> hello.o: hello.c (실행 결과) ---------------------------------------------------------------
-MT 옵션 : -M 또는 -MM 옵션과 함께 쓰일 때, 타겟의 이름을 바꾼다. --> gcc -M -MT hello_MT.o hello.c
다음은 실행 결과이다. hello_MT.o: hello.c f:/lang/gcc/usr/include/stdio.h \
f:/lang/gcc/usr/include/sys/cdefs.h \
f:/lang/gcc/usr/include/sys/gnu/cdefs.h \
f:/lang/gcc/usr/include/features.h

f:/lang/gcc/usr/include/sys/_types.h \

f:/lang/gcc/usr/include/machine/_types.h \
f:/lang/gcc/usr/include/386/_types.h
--------------------------------------------------------------
-MF 옵션 : -M 또는 -MM 옵션과 함께 쓰일 때, 출력 결과를 해당 장치 또는 파일
로 보낸다. gcc -M -MF hello.d hello.c
이 때 실행 결과는 표준 출력 장치에 나타나는 것이 아니라 hello.d 라는 파일에 저
장된다.

'Hacking' 카테고리의 다른 글

How to prepare Capture The Flag(CTF) Competition?  (0) 2020.06.15