일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- String
- Kotlin for Java Developers
- 메이븐
- 링커
- java
- lambda
- 컴퓨터시스템
- ORM
- DispatcherServlet
- springboot
- ApplicationContext
- 토비의스프링3.1
- 토비의스프링
- 프록시
- Spring
- DesignPattern
- hibernate
- springwebmvc
- gradle
- IOC
- 링킹
- 빌드툴
- exception
- 클린코드
- beanfactory
- FunctionalInterfaces
- JPA
- AutoConfiguration
- Immutable
- Today
- Total
목록링킹 (2)
엔지니어로 가는 길
이번 시간에는 정적 링킹과 동적 링킹의 차이에 대해 이해해보자. 아래의 그림에서 왼쪽은 정적 링킹 방식이고 오른쪽은 동적 링킹 방식이다. 먼저 글을 찬찬히 읽은 뒤 다시 그림을 살펴보는 것이 좋겠다. Static Linking (정적 링킹) 정적 링킹이란 실행 가능한 목적 파일을 만들 때 프로그램에서 사용하는 모든 라이브러리 모듈을 복사하는 방식을 말하며 링커에 의해 이루어진다. 즉, 자신이 작성한 프로그램에서 A라는 외부 함수를 사용했다면, A라는 외부 함수에 대한 정보를 자신이 작성한 프로그램의 실행파일을 만들 때 복사해온다. 5개의 프로그램에서 A라는 외부 함수를 이용하는데 이때 정적 링킹 방식을 사용하면 5개의 프로그램의 실행 가능한 목적파일 각각에 A의 정보가 담긴다. 즉, 중복이 발생한다. 따..
이번에는 링킹이 무엇인지, 링커란 무엇인지에 대해 간략히 알아보도록 한다. Linking(링킹)은 여러 개의 코드와 데이터를 모아서 연결하여 메모리에 로드될 수 있고 실행될 수 있는 한 개의 파일로 만드는 작업이다. 이 파일이 메모리에 로딩되어 실행된다. 링크는 컴파일시에 수행되는 경우도 있고, 로딩시에 수행되는 경우도 있고, 실행시에 수행되는 경우도 있다. Linker(링커)란 링킹을 담당하는 프로그램이다. 링커는 소프트웨어 개발에서 독립적인 컴파일을 가능하게 하는 아주 중요한 역할을 담당한다. 링커 덕분에 큰 규모의 응용프로그램을 한 개의 소스 파일로 구성하는 대신 별도로 수정할 수 있고, 컴파일할 수 있는 보다 관리할 만한 규모의 더 작은 모듈들로 나눌 수 있다. 즉, 아주 거대한 프로그램을 하나의..