본문 바로가기

프로그래밍 (이동 완료)/C,C++

so, dll 이란

SO (Shared Object) :

  • 특정한 기능을 구현해 놓은 라이브러리 파일
  • 공유 객체로써 하나 이상의 프로그램에서 리소스를 오프로드 하는데 사용
  • 리눅스에는 dll 대신 so 라는 동적 라이브러리 사용
  • 실행 파일 실행 시, 실행 파일과 함께 메모리에 로드 됨.
  • linux 에서 쓰는 Executable and Linkable format (ELF) 파일
  • so 파일을 찾는 경로
    1. system default 경로 (일반적으로 /usr/local/bin , /usr/bin , /etc/ld.so.conf 파일에 설정 되 있는 값)
    2. LD_LIBRARY_PATH (일반적으로 ~/.bash_profile 에서 설정해주는 환경 변수)
    3. binary code 에 hard-coding 된 경로

 

DLL (Dynamic Link Library)

- DLL : 동적 연결 라이브러리

정적 링크 (Static Link Library) 와는 다르게 컴파일 시점에 실행 파일에 함수를 복사하지 않고, 함수의 위치정보만 갖고 그 함수를 호출 할 수 있음

- Windows 에서 쓰는 Portable Executable (PE) 파일임.

 

 

 

 

출처 : 

https://jacking75.github.io/Linux_lib_setting/

 

C++ - [펌] Linux에서 라이브러리 로딩 - jacking75

출처: 라이브러리 로딩 - ld.so.conf 라이브러리 로딩 - ld.so.conf 동적 라이브러리를 호출하기 위해서는 path 지정이 필수이다. 해당 라이브러리가 어디에 위치해 있는지 모든 디렉토리를 탐색하기에

jacking75.github.io