IT 그리고 정보보안/Knowledge base

공유 라이브러리 (Shared Library)

plummmm 2021. 4. 18. 20:02
반응형

앞전에 정적 라이브러리에 대해 알아봤다.

프로그램이 실행파일이 되면서 오브젝트 코드들이 포함되어 만들어져서 

굉장히 비효율 적이라고 말한바 있다.

 

그럼 공유 라이브러리는??어떨까 

공유 라이브러리는 프로그램 실행 파일에 라이브러리의 오브젝트 코드가 포함되는 것이 아니라

프로그램 실행 시에 필요한 오브젝트 코드를 참조하는 방식이다.

 

쉽게 생각하면

정적 라이브러리는 오브젝트 파일들을 "아카이브 파일"이라는 곳에 때려 넣어 모아둔다는 개념이고

공유 라이브러리는 오브젝트 파일들을 모아서 하나의 거대한 "오브젝트 파일"로 만들어 공유가 가능하게 만든 것이다.

 

굳이 그림을 그려주자면..

 

공유 라이브러리 파일은 *.so 확장자를 가진다.

 

그럼 이번에는 공유라이브러리를 만들어보자.

생각보다 별거 없다.

 

먼저 라이브러리로 등록할 함수 코드를 작성하자.

대충 아무거나 쓰면 된다.

 

hack.c

include <stdio.h>

void hack(){

printf("abcd\n");

}

 

$gcc -fPIC hack.c -shared -o libhack.so

/* PIC 코드 즉, 독립된 형태의 코드로 다른 파일과 동적 링크가 가능하게 하는 

    옵션을 주고 -shared 옵션은 공유 라이브러리를 생성할 때 주는 옵션이다. */

 

뒤에 공유 라이브러리 사용에 대한 내용은 추후에 추가하도록 하겠음.

반응형