본문 바로가기
IT 프로그래밍 관련/리눅스 시작하기

Ubuntu C언어로 프로그래밍하기 ( 컴파일 )

by 지나는행인 2021. 4. 1.
728x90

우분투 터미널(콘솔)에서 텍스트에디터를 이용하여 C언어로 프로그래밍이 가능하다.

 

C언어로 프로그래밍한 것을 실행하기위해서는 컴파일을 해야하고, 컴파일 후 실행이 가능하다.

 

한번 보겠다.

 

먼저 vim으로 에디터를 작성해봤다. (파일명 program.c)

* C 언어 문법으로 에디터 작성

이렇게 작성을 한 후에 , 이 파일을 컴퓨터가 알아들을 수 있도록 하게 하는 작업인 컴파일을 해줘야한다.

 

* 컴파일 과정

컴파일에는 위와 같이 단계가 존재하는데 , 

 

단계별로 처리과정은

 

전처리기(Preprocessor) : #include<stdio.h>  와 같이, 지금 파일에 작성된 코드가 아닌, 다른 파일로부터 코드를 가져와 사용한다고 알렸다면 이것을 실제로 가져온다.

 

컴파일러(Complier) : 실제 코드들이 전처리기에 의해 완성되었으니, 이것을 저수준 언어(기계에 훨씬 가까운 언어)로 변경한다.

 

어셈블러(Assembler) : 컴파일러가 변환한 것도 사실은 아직 인간에게 가까운 언어이다. 이것을 완벽한 기계어로 바꿔준다

 

링커(Linker) : 기계어로 바뀐 건 컴퓨터가 이해할 수 있습니다. 이런 파일들을 하나로 묶어주고, 실행 파일(.exe)에 연결해줍니다.

 

이러한 컴파일 과정을 한번에 해결해 주는 gcc패키가 리눅스에는 존재한다.

gcc 패키지를 이용해 컴파일 해보겠다.

 

> gcc program.c(파일명)     :  *.out 이라는 실행 파일을 생성

 

실행파일명을 바꾸고 싶다면

 

> gcc -o program.exe(실행파일명) program.c(기존파일명)     : 으로 실행한다면 원하는 파일명을 얻을 수 있다.

* C언어 컴파일 화면
컴파일 완료 후 파일 내용( 컴퓨터 언어로 되어 있다. )

컴파일이 다 됐다면 파일 실행이 가능하다.

파일실행은

./실행파일명  으로 실행한다.

 

 

코드를 작성한대로 출력되는 것을 볼 수 있다.

 

 

 

 

 

#### 컴파일 세부적으로 해보기~

 

위의 방법은 컴파일의 과정을 한번에 하였지만, 별개로 전처리, 컴파일러, 어셈블러, 링커  순으로 차례로 할 수 있다.

 

전처리기(전처리기까지만 진행)

* program_processed.i 파일화면         ,        전처리 완료 파일 생성화면

 

컴파일러(컴파일러까지만 진행)

* 컴파일 완료 파일 생성화면(코드)       ,     program_compiled.s 실행화면

 

 

어쎔블러(어쎔블러까지만 진행)

*어쎔블러 완료 파일 생성화면과 인코딩 후 출력화면     ,             program_assembled.o 에디터실행화면

위의 완성된 파일을 vim을 이용해 실행을 하면 오른쪽과 같은 알 수 없는 문자들이 나오고,(16진수)

 

hexdump program_assembled.o  를 사용해 16진수의 문자들을 인코딩하여 출력한다.

 

 

 

링커(어쎔블러에서 링커까지만 진행)

*링커 완료 화면

 

어쎔블러까지 완성된 파일에 마지막 링커 진행.

위의 코드 이후에 

hexdump program_linked.exe 를 사용해 16진수의 문자들을 인코딩 출력가능하다.

 

이후 실행파일을 실행시키면

 

파일 내용대로 코드가 실행되는 것을 볼 수 있다.

 

 

댓글