컴파일러와 링커
고수준 프로그래밍 언어
최고수준언어 : 인간의 언어 ↔ 로우수준언어 : 기계어(2진수로 된 머신 코드)
저수준언어는 컴퓨터가 알아듣기 더 적합하다.
컴파일러 : 고수준언어인 프로그래밍언어를 컴파일러가 기계어로 변환 시켜줘서 CPU가 읽고 출력 할 수 있게 한다.
컴파일러와 링커가 하는 일
소스코드(c파일) → 컴파일러 →오브젝트 코드(obj파일) →링커 → 실행 파일(exe파일)
모든 언어가 스타일이 다르기 때문에 링커의 단계까지 있는 것도 아니고 컴파일러의 역할이 조금씩 다르다.
- 컴파일러
프로그래밍언어를 기계어로 변역.
컴파일러가 오브젝트 코드를 만들어서 링커 하는 작업까지 포함해서 컴파일러라고 부르기도 한다.
소스코드를 컴파일러가 기계어로 번역한다. → C파일 하나 당 오브젝트 코드 하나 완성.
C파일이 여러개 일 땐 오브젝트 파일도 여러개.
- 링커
C, C++의 특징인 링커.
obj파일들을 엮어서 링킹(연결) 해줘서 최종적으로 실행파일을 만들어 주는 것.
라이브러리에서 쓰고 싶어하는 기능 인식해서 실행파일에 넣어준다.
* 라이브러리 코드
라이브러리코드는 모든 기능을 다 구현 하기엔 너무 많아서 프로그램언어 내부적으로 포함된 기능 중 함수로 라이브러리에 들어있다.
현대의 프로그램언어에서는 라이브러리를 많이 제공해주고 있다. 단 C언어는 그 철학 때문에 최소한의 표준라이브러리만 제공하지만 다른 프로그래머들이 표준 외에 많은 라이브러리를 배포하고 있기 때문에 그것을 가져다 쓰면 된다.
* 착수(start-up) 코드
다양한 프로그램들이 공통적으로 시작 할 때마다 해야 하는 일들(ex. 메모리 할당 등)
착수코드를 컴파일러가 알아서 해주고 연결해주고 링커가 실행파일로 열어주는 역할을 한다.
#include <stdio.h>
int main()
{
printf("Hello, World!");
return 0;
}
* #include stdio. h : std=standard io=inputoutput
표준 입출력 담당기능이 라이브러리에 있으니 가져다가 내 프로그램에 include(포함)시켜달라고 하는 것.
* ;(세미클론) 꼭 입력하기
파이썬 같은 경우는 ;이 없지만 C언어에서는 꼭 입력해야한다.
파일들은 어디에 있을까?
1. 해당 파일 탐색기창 열기
- 프로젝트탭 우클릭 - Open Containing Folder - 탐색기 창
- 탐색기창 열어서(단축키 윈도우+E) 해당 파일 들어가기
2. 파일들 확인하기
Project폴더 - Debug폴더 - obj파일이 있다.
Solution폴더 - Debug폴더 - exe파일이 있다.
- 실행파일이 바로 사라져 버리는 이유 : 출력하라고만 하고 대기하라고 작성 안해서.
- Debug에 실행파일들 지우는 법 : build 클릭 - Clean Solution 클릭
- 실행 파일 다시 만들고 싶으면 : Debug - Start without Debugging(단축키 Ctrl+F5)
'프로그래밍언어 > C언어' 카테고리의 다른 글
[C language] C의 해부학 (0) | 2020.11.14 |
---|---|
[C language] 비주얼 스튜디오 코드로 C언어하기(+ C++맛보기) (0) | 2020.11.14 |
[C language] C언어와 함수 (0) | 2020.11.05 |
[C language] 비주얼 스튜디오 2019로 C언어하기 (0) | 2020.11.05 |
[C language] C언어란? (0) | 2020.11.02 |