우분투 터미널(콘솔)에서 텍스트에디터를 이용하여 C언어로 프로그래밍이 가능하다.
C언어로 프로그래밍한 것을 실행하기위해서는 컴파일을 해야하고, 컴파일 후 실행이 가능하다.
한번 보겠다.
먼저 vim으로 에디터를 작성해봤다. (파일명 program.c)
이렇게 작성을 한 후에 , 이 파일을 컴퓨터가 알아들을 수 있도록 하게 하는 작업인 컴파일을 해줘야한다.
컴파일에는 위와 같이 단계가 존재하는데 ,
단계별로 처리과정은
전처리기(Preprocessor) : #include<stdio.h> 와 같이, 지금 파일에 작성된 코드가 아닌, 다른 파일로부터 코드를 가져와 사용한다고 알렸다면 이것을 실제로 가져온다.
컴파일러(Complier) : 실제 코드들이 전처리기에 의해 완성되었으니, 이것을 저수준 언어(기계에 훨씬 가까운 언어)로 변경한다.
어셈블러(Assembler) : 컴파일러가 변환한 것도 사실은 아직 인간에게 가까운 언어이다. 이것을 완벽한 기계어로 바꿔준다
링커(Linker) : 기계어로 바뀐 건 컴퓨터가 이해할 수 있습니다. 이런 파일들을 하나로 묶어주고, 실행 파일(.exe)에 연결해줍니다.
이러한 컴파일 과정을 한번에 해결해 주는 gcc패키가 리눅스에는 존재한다.
gcc 패키지를 이용해 컴파일 해보겠다.
> gcc program.c(파일명) : *.out 이라는 실행 파일을 생성
실행파일명을 바꾸고 싶다면
> gcc -o program.exe(실행파일명) program.c(기존파일명) : 으로 실행한다면 원하는 파일명을 얻을 수 있다.
컴파일이 다 됐다면 파일 실행이 가능하다.
파일실행은
./실행파일명 으로 실행한다.
코드를 작성한대로 출력되는 것을 볼 수 있다.
#### 컴파일 세부적으로 해보기~
위의 방법은 컴파일의 과정을 한번에 하였지만, 별개로 전처리, 컴파일러, 어셈블러, 링커 순으로 차례로 할 수 있다.
전처리기(전처리기까지만 진행)
컴파일러(컴파일러까지만 진행)
어쎔블러(어쎔블러까지만 진행)
위의 완성된 파일을 vim을 이용해 실행을 하면 오른쪽과 같은 알 수 없는 문자들이 나오고,(16진수)
hexdump program_assembled.o 를 사용해 16진수의 문자들을 인코딩하여 출력한다.
링커(어쎔블러에서 링커까지만 진행)
어쎔블러까지 완성된 파일에 마지막 링커 진행.
위의 코드 이후에
hexdump program_linked.exe 를 사용해 16진수의 문자들을 인코딩 출력가능하다.
이후 실행파일을 실행시키면
파일 내용대로 코드가 실행되는 것을 볼 수 있다.
'IT 프로그래밍 관련 > 리눅스 시작하기' 카테고리의 다른 글
Ubuntu 자동마운트 (0) | 2021.04.05 |
---|---|
Ubuntu 파일시스템 , 마운트( mount , umount ) (0) | 2021.04.05 |
Ubuntu 쉘 스크립트 휴지통만들기!(임시) (0) | 2021.03.31 |
Ubuntu 쉘 스크립트 (생성 , 연산, if-else, case-esac) (0) | 2021.03.31 |
Ubuntu redirection, pipe , alias (0) | 2021.03.31 |
댓글