티스토리 뷰
할 일 다 끝내고 시간 남으면 놀아달라 했더니
심야 영화 보러 갈까? 라는 내 님의 말을 듣고
의욕이 집중력이 상승했다.
그러니 바로 다음 개념인 링킹에 대해 정리해보겠다.
우리는 앞서 개발자가 알 수 있는 프로그래밍 언어를 기계어로 변환시켜주는 것이 컴파일이고,
그 변환된 파일을 오브젝트 파일이라 불린다는 것에 대해 알아보았다.
이쯤에서 어떠한 작은 프로그램을 만드는 중이라고 생각해보자.
우선 java코드를 작성할 것이고 그것을 컴파일할 경우 오브젝트 파일이 생성될 것이다.
그런데 잘 생각해보면 우리는 코드를 작성할 때 순수 java 코드뿐만 아니라 다음번에 다룰 `라이브러리`라는 녀석을
같이 적용하여 사용하고 있다.
그렇다면 실제 프로그램이 돌아갈 때 java 코드만 변경된 오브젝트 파일로 실행할 수 있을까?
거기다 한 프로그램 안에 오브젝트 파일이 많은 경우엔 어떻게 되는가?
이러한 부분을 위해 프로그램에 필요한 오브젝트 파일들을 하나로 합치고 추가로 라이브러리까지 합쳐서
.exe라는 `실행파일을 만드는 과정을 링킹(Linking)`이라고 한다.
자, 이제 프로그램이 완성되었다!
이제 실행파일을 눌러 실행시켜보자.
실행을 시키면 컴퓨터는 메모리를 적재시키고 프로그램을 수행할 것이다.
이것을 로더(Loader)라고 하는데…….
간단하게 정리하고 끝내려 했더니 로더라는 개념도 쉽게 넘어갈 내용이 아니었다.
그러니 로더는 다음에 다루도록 하고,
여기까지 과정을 전체적으로 정리해보자면
코드를 작성 -> 컴파일 -> 오브젝트 파일의 생성 -> 링킹 -> 실행
이렇다고 볼 수 있을 것이다.
추가로 링커(Linker)라는 단어가 있다.
처음에는 이게 뭣이여? 했는데 알아보니
링커는 `하나 이상의 오브젝트 파일을 가져와 하나의 실행파일로 병합하는 프로그램`이고,
링킹은 `그 프로그램을 실행하는 과정`이라 생각하면 될 것 같다.
'읽고 쓰고 씹고 즐기고 > CS' 카테고리의 다른 글
컴파일(compile)과 오브젝트 파일(Object file) (0) | 2019.03.17 |
---|---|
jar과 war (0) | 2019.03.16 |
- Total
- Today
- Yesterday
- HTTP
- Spring
- mapping
- Gradle
- homebrew
- 자바스크립트
- spring-boot
- graphQL
- MySQL
- 프로그래머스
- springboot
- 일지
- 모듈
- Spring Boot
- @Autowired
- web
- 멀티모듈
- body
- 회고
- header
- Java
- RequestHandler
- JAR
- 인텔리J
- 스터디 회고
- 개발일지
- Request Handler
- 개발
- 한 입 크기로 잘라먹는 리액트
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |