DLL, SO파일은 라이브러리 파일이다.
라이브러리(Library)
소프트웨어 개발에서 자주 쓰고 기초적인 함수들을 중복 개발하는것을 피하기 위해 표준화된 함수 및 데이터 타입을 만들어서 모아 놓은 것이다.
DLL(Dynamic-Link Library)
- DLL은 동적 연결 라이브러리로써, 실행 파일에서 해당 라이브러리의 기능을 사용 시에만, 라이브러리 파일을 참조하여 기능을 호출한다.
- 정적 링크(Static-Link Library)와는 다르게 컴파일 시점에 실행 파일에 함수를 복사하지 않고, 함수의 위치정보만 갖고 그 함수를 호출할 수 있게 한다.
- DLL파일의 컴파일 아키텍쳐가 x64인지 x86인지 확인하여야 한다. 아키텍쳐가 다른 프로그램에서 호출할 수 없다.
- Windows 운영체제에서 사용하는 PE(Portable Executable) 파일이다.
SO(Shared Object)
- SO는 공유 객체로써, 하나 이상의 프로그램에서 리소스를 오프로드하는 데에 사용할 수 있는 정보가 포함되어 있다.
- 리눅스에는 dll이 존재하지 않는다. 대신 SO라는 동적 라이브러리 개념이 있다.
- Linux에서 사용하는 ELF(Executable and Linkable Format) 파일이다.
DLL과 SO의 차이점
- 프로그램 관점에서 바이너리 형식이 다르다.
- Process 구조의 차이점이 있다.
- DLL은 Windows 운영체제에서, SO는 Linux 운영체제에서 사용된다.
- 따라서 기본적으로는 Windows에서 SO파일을 불러오지 못하고, Linux에서는 DLL파일을 불러오지 못하는 한계가 있다.
#References
https://goddaehee.tistory.com/185
http://tmmse.xyz/2020/04/22/linuxandwindows/
'ETC' 카테고리의 다른 글
ESLint와 Prettier (2) - VSCode에 ESLint와 Prettier설치 (0) | 2022.10.17 |
---|---|
ESLint와 Prettier (1) - ESLint와 Prettier의 차이점 (0) | 2022.10.17 |
Ubuntu 18.04 관리자 권한으로 폴더 프로그램 사용 (0) | 2022.09.29 |
[VSCode] Prettier 확장 / .prettierrc 파일 작성법 (0) | 2022.05.15 |
티스토리에 사이드 목차 추가하기 (0) | 2022.05.02 |