Skip to content
Snippets Groups Projects
Commit 7db5148c authored by LEESANGKYEONG's avatar LEESANGKYEONG
Browse files

HW update

parent d24b6a80
Branches
No related tags found
No related merge requests found
# Difference between Compiler and interpreter # Difference between Compiler and interpreter
-- compiler - compiler
-- 1. 프로그래밍 언어를 Runtime 이전에 기계어로 해석 - 1. 프로그래밍 언어를 Runtime 이전에 기계어로 해석
-- 2. 구동시에 코드와 함께 시스템으로부터 메모리를 할당받으며 할당받은 메모리 사용 - 2. 구동시에 코드와 함께 시스템으로부터 메모리를 할당받으며 할당받은 메모리 사용
-- 3. Runtime 이전에 해석을 마치고 바로 기계어로 전환되기 때문에 OS 및 빌드 환경에 종속적 - 3. Runtime 이전에 해석을 마치고 바로 기계어로 전환되기 때문에 OS 및 빌드 환경에 종속적
-- 4. 종속적이므로 OS 환경에 맞게 호환되는 라이브러리와 빌드환경을 구분해서 구축 - 4. 종속적이므로 OS 환경에 맞게 호환되는 라이브러리와 빌드환경을 구분해서 구축
-- interpreter - interpreter
-- 1. Runtime 이후에 Row단위로 해석하며 프로그램 구동 - 1. Runtime 이후에 Row단위로 해석하며 프로그램 구동
-- 2. 프로그래밍 언어를 기계어로 바꾸지 않고 중간 단계를 거친 뒤, Runtime에 즉시 해석하기 때문에 compiler보다 낮은 퍼포먼스 - 2. 프로그래밍 언어를 기계어로 바꾸지 않고 중간 단계를 거친 뒤, Runtime에 즉시 해석하기 때문에 compiler보다 낮은 퍼포먼스
-- 3. Runtime에 실시간 debugging 및 코드 수정 가능 - 3. Runtime에 실시간 debugging 및 코드 수정 가능
-- 4. 메모리를 별도로 할당받아 수행되지 않고, 필요할 때 할당받아 사용 - 4. 메모리를 별도로 할당받아 수행되지 않고, 필요할 때 할당받아 사용
--출처: <https://jins-dev.tistory.com/entry/Compiler-%EC%99%80-Interpreter-%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90> - 출처: <https://jins-dev.tistory.com/entry/Compiler-%EC%99%80-Interpreter-%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90>
# GCC # GCC
1. 전처리 - 1. 전처리
-- #include, #define과 같은 전처리기 부분을 처리함, 필요한 헤더 파일을 삽입하고 실행 문장의 매크로를 상수로 변환 - #include, #define과 같은 전처리기 부분을 처리함, 필요한 헤더 파일을 삽입하고 실행 문장의 매크로를 상수로 변환
2. 컴파일 - 2. 컴파일
-- 전처리된 파일로부터 어셈블리어루 된 파일 생성 - 전처리된 파일로부터 어셈블리어루 된 파일 생성
3. 어셈블 - 3. 어셈블
-- 기계어로 된 오브젝트 파일로 변환 - 기계어로 된 오브젝트 파일로 변환
4. 링크 - 4. 링크
-- 라이브러리 함수와 오브젝트 파일을 연결하여 실행 파일을 생성 - 라이브러리 함수와 오브젝트 파일을 연결하여 실행 파일을 생성
# GCC command # GCC command
-- -E option: 전처리까지만 실행항 .i file 생성 - -E option: 전처리까지만 실행항 .i file 생성
-- 사용법: gcc -E <filename>.c > <filename>.i - 사용법: gcc -E <filename>.c > <filename>.i
![1](./image/1.PNG) ![1](./image/1.PNG)
-- -S option: 어셈블리까지 실행하여 .s file 생성 - -S option: 어셈블리까지 실행하여 .s file 생성
-- 사용법: gcc -S <filename>.i - 사용법: gcc -S <filename>.i
![2](./image/2.PNG) ![2](./image/2.PNG)
-- -c option: 전처리, 컴파일, 어셈블 실행하지만 링크는 안함 -> .o file 생성 - -c option: 전처리, 컴파일, 어셈블 실행하지만 링크는 안함 -> .o file 생성
-- 사용법: gcc -c <filename>.s - 사용법: gcc -c <filename>.s
![3](./image/3.PNG) ![3](./image/3.PNG)
-- -g option: 운영체제 고유의 형식으로 디버깅 정보를 만듦 - -g option: 운영체제 고유의 형식으로 디버깅 정보를 만듦
-- 사용법: gcc- -g <filename>.c - 사용법: gcc- -g <filename>.c
![7](./image/7.PNG) ![7](./image/7.PNG)
-- 디버깅 정보를 추가하여 컴파일 하였기 때문에 용량이 더 큼 - 디버깅 정보를 추가하여 컴파일 하였기 때문에 용량이 더 큼
-- -o <file> option: 출력파일의 이름을 지정할 수 있음 - -o <file> option: 출력파일의 이름을 지정할 수 있음
-- 사용법: gcc -o <filename> 01.option-E.c - 사용법: gcc -o <filename> 01.option-E.c
![4](./image/4.PNG) ![4](./image/4.PNG)
-- -I<dir> option: C source가 표준 디렉토리가 아닌 위치에 있는 헤더 파일을 가질 때, 해당 디렉토리 위치 지정해줌 - -I<dir> option: C source가 표준 디렉토리가 아닌 위치에 있는 헤더 파일을 가질 때, 해당 디렉토리 위치 지정해줌
-- 사용법: gcc <filename>.c -l<dir> - 사용법: gcc <filename>.c -l<dir>
![6](./image/6.PNG) ![6](./image/6.PNG)
-- -l<library name>: 표준 라이브러리가 아닌 라이브러리를 사용하고 싶을 때, 해당 라이브러리 지정해줌 - -l<library name>: 표준 라이브러리가 아닌 라이브러리를 사용하고 싶을 때, 해당 라이브러리 지정해줌
-- 사용법: gcc <filename>.c -l<libraryname> - 사용법: gcc <filename>.c -l<libraryname>
![11](./image/11.PNG) ![11](./image/11.PNG)
-- -L<dir> option: 사용자가 라이브러리를 직접 만들거나 새 라이브러리를 내려 받아 사용할 때, 해당 라이브러리 지정해줌 - -L<dir> option: 사용자가 라이브러리를 직접 만들거나 새 라이브러리를 내려 받아 사용할 때, 해당 라이브러리 지정해줌
-- 사용법: gcc -L<library directory> - 사용법: gcc -L<library directory>
-- -D<macro> option: #define MACRO를 선언 해준다. - -D<macro> option: #define MACRO를 선언 해준다.
-- 사용법: gcc -D<정의할 MACRO 이름> - 사용법: gcc -D<정의할 MACRO 이름>
![8](./image/8.PNG) ![8](./image/8.PNG)
-- #define NO를 -DNO로 선언함으로써 오류없이 컴파일됨 - #define NO를 -DNO로 선언함으로써 오류없이 컴파일됨
-- -O<level> option: -O1, O2, O3의 세가지의 옵션이 존재하고 최소한의 스레드 분기 동작 횟수를 줄인다. 컴파일 시간은 증가하지만, 실행은 빨라짐 - -O<level> option: -O1, O2, O3의 세가지의 옵션이 존재하고 최소한의 스레드 분기 동작 횟수를 줄인다. 컴파일 시간은 증가하지만, 실행은 빨라짐
-- 사용법: gcc -O2 <filename>.c - 사용법: gcc -O2 <filename>.c
-- -wall: gcc가 제공하는 모든 경고 메시지 출력 - -wall: gcc가 제공하는 모든 경고 메시지 출력
-- 사용법: gcc -Wall <filename>.c - 사용법: gcc -Wall <filename>.c
![10](./image/10.PNG) ![10](./image/10.PNG)
-- -v option: 컴파일 과정과 version 출력 - -v option: 컴파일 과정과 version 출력
-- 사용법: gcc -v <filename>.c - 사용법: gcc -v <filename>.c
![9](./image/9.PNG) ![9](./image/9.PNG)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment