본문 바로가기

C# 프로그래밍/.Net 가이드

[C#] .exe & .dll 파일

반응형

EXE 파일 (실행 파일)

.exe 파일의 용도

우리가 윈도우 운영체제에서 게임을 실행하려고 하면 .exe파일을 열어서 실행하는 경우가 대부분이다.

바로가기 폴더로 실행한다 하더라도 결국엔 .exe인 경우가 많다.

여기서 우리는 어떤 프로그램을 실행하는 본체는 .exe파일이라는 것을 감으로 짐작할 수 있다.

 

exe파일은 Executable(실행가능한)의 약자이다.

다시말해서, 실행할 수 있는 파일이라는 의미이다.

우리가 코딩을 해서 어떤 프로그램을 만들면 exe파일을 통해 해당 프로그램을 실행할 수 있다.


.exe 파일이 생성되는 과정

어떤 프로그램을 실행하기 위해 .exe파일을 만들어야 하는데, .exe는 어떻게 생성되는 것일까.

다음과 같은 과정을 거친다.

 

  1. 소스 코드 작성 : 프로그래머가 C#과 같은 언어로 코딩을 해서 프로그램을 생성하기 위한 소스 코드를 작성한다.
  2. 컴파일 : C# 컴파일러가 소스코드를 IL(CIL)이라는 중간 언어로 변환하여 파일 내부에 생성한다. 또한 CLR이라는 버추얼 머신에서 동작할 수 있게 해주는 CLR 로더를 exe파일 내부에 추가한다.
  3. 링킹 : 링커가 오브젝트 파일들과 필요한 라이브러리 파일들을 결합한다.
  4. 파일 생성 : 링킹이 완료되면 exe 파일이 완성된다.

 

대부분의 exe파일은 위와 같은 과정을 거친다. 이 중 눈여겨 봐야할 단어는 IL과 CLR이다.

이에 대해서는 추후 포스팅에서 다룰 예정이다.


DLL 파일 (동적 라이브러리 파일)

.dll 파일의 용도

dll은 개발자가 아니면 크게 신경 쓰지 않는 파일이다. 자주 볼순 있어도 dll 파일로 뭔가를 할 수는 없기 때문이다.

하지만 dll은 exe만큼이나 중요하다.

 

dll은 Dynamic Link Libray의 줄임말로, 이름에서 알 수 있듯이 라이브러리(필요한 코드 데이터)들을 동적으로 연결해 주는 역할을 한다. 다시 말해서 프로그램이 실행 중인 와중에 어떤 클래스와 어떤 함수 같은 로직이 필요하다면, 그때그때 꺼내 쓰는 파일인 것이다.

 

exe와는 다르게 독립적으로는 실행되진 않지만 실행된 프로그램에서 동적으로 로드되어 사용된다. 따라서 재사용성과 유지보수가 용이해야 한다. 여러 프로그램에서 사용할 수 있어야 하기 때문이다.


.dll 파일이 생성되는 과정

exe 파일이 만들어지는 과정과 거의 같다.

다만 링킹이 조금 다른데, exe의 경우 정적 링킹 방식을 사용하지만 dll의 경우 동적 링킹 방식을 사용한다.


EXE와 DLL의 차이점

가장 큰 차이점은 실행 시점이다. exe는 (독립적 실행에) 필요한 모든 라이브러리들을 갖고 있지만 dll은 프로그램 실행와중에 갖고 오거나 가져다준다.

이는 두 파일의 크기와도 연관된다. 독립적으로 실행하기 위해 모든 파일이 필요하다면 그만큼 용량도 커지게 된다. 하지만 동적으로 파일을 가져다 쓸 수 있다면 자체적으로 가져야 할 크기는 작아지게 된다.

반응형