열정 실천

리눅스랑 더 친해지기! vim / gcc / make 본문

CS/OS

리눅스랑 더 친해지기! vim / gcc / make

구운오니 2024. 9. 13. 13:49
728x90

 

 

vim

 

vim 

 

Linux의 대표적인 텍스트 편집기로 vi와 호환된다. 

 

 

vim은 입력모드, 명령모드, ex모드 3가지 모드를 가지고 있다. 

 

 

 

1. 명령모드 

- 처음 vim 명령어로 편집기를 실행하면 들어가는 모드이다. 

- 문서를 실제로 편집하기 위해서는 i 나 a를 입력해야한다. 

- 이 모드에서 복사, 붙여넣기 등의 작업을 할 수 있다. 

 

2. 입력모드

- 실제로 문서를 편집하기 위한 모드이다. 

 

3. ex모드

- 입력을 마친 후 저장을 하거나 종료를 할 수 있다. 

- w : 저장 / q : 종료 / i : 취소

 

 

입력모드에서 입력을 끝내고 esc 키를 누른 뒤 :wq 를 입력하고 enter를 치면! 저장하고 편집기 종료!

 

 

 

 

 

 

gcc

 

gcc란? 

 

컴파일러. 소스파일을 이용해 실행파일을 만들 때까지 필요한 프로그램을 차례로 실행시키는 툴

 

 

gcc 옵션 

 

-o : 지정된 이름으로 실행파일 생성 (default : a.out)

-c : 오브젝트 파일 (.o) 생성

-l : 같이 링크할 라이브러리 지정

-v : 컴파일 수행 메세지 표시

-S : 어셈블리 파일 생성

 

 

👉 c파일 생성 후 작성

 

c 파일

 

👉 c 파일 (.c) --> 어셈블리 파일 (.s)

 

어셈블리 파일

 

👉 어셈블리 파일 (.s) --> 오브젝트 파일 (.o)

 

오브젝트 파일

 

👉 c 파일 (.c) --> 실행파일 (.a)

실행파일 실행

 

 

 

make

 

make란?

 

  • 소스코드를 컴파일하기 위한 자동화 도구
  • 소스 파일 간의 의존성을 관리하고, 변경된 파일만 다시 컴파일하여 효율적인 빌드 가능 
  • 의존성 관리 : 소스 파일 간의 의존 관계를 정의하고, 필요한 경우에만 빌드를 수행 
  • 자동화 : 복잡한 빌드 과정(컴파일, 링크 등)을 자동으로 처리하여 개발자의 수고를 덜어줌
  • Makefile 사용 : 빌드 규칙과 의존성을 정의한 이 Makefile을 바탕으로 작동

 

이 세 개의 소스파일을 헤더파일과 함께 각각 컴파일하여 오브젝트 파일(.o)을 생성 후 

오브젝트 파일 세 개를 링크 과정을 통해 묶은 뒤 result.out이라는 실행파일을 만드려고 한다. 

main함수 안에는 test1과 test2의 함수를 호출하는 의존성이 존재한다. 

 

Makefile을 쓰지않고 직접 컴파일하려면

gcc -c -o main.o main.c
gcc -c -o test1.o test1.c
gcc -c -o test2.o test2.c
gcc -o app.out main.o test1.o test2.o

 

소스코드를 수정할 때마다 이렇게 일일이 명령어를 수행해줘야한다. 

 

이를 편리하게 하기 위한 방법이 Makefile!!!

 

Makefile 작성

 

아래처럼 Makefile을 작성하고 

result.out : main.o test1.o test2.o
        gcc -o result.out main.o test1.o test2.o


main.o : main.c test1.h test2.h
        gcc -c main.c test1.h test1.h

test1.o : test1.c test1.h
        gcc -c test1.c test1.h

test2.o : test2.c test2.h
        gcc -c test2.c test2.h

 

명령어 make로 Makefile을 실행해보면

 

 

make명령어마 치면 컴파일이 자동으로 수행되고 result.out 실행파일이 생성된 것을 확인할 수 있다. 

 

-.h.gch 파일은 전처리된 헤더파일을 의미한다. 

728x90