2024/04/18 2

리눅스 동적 정적 라이브러리

1.  동적 라이브러리   5.5.1  OCRAM protection 실행 시간에 라이브러리 파일을 찾아 코드를 포함하기 때문에 동적라이브러리라고 부릅니다.즉, 정적 라이브러리는 컴파일 시간에 코드를 결정하기 때문에 소스가 변경되면 새로 컴파일 해야하지만, 동적 라이브러리의 경우 라이브리만 교체하는 것으로도 변경이 가능합니다.$ gcc -c -fPIC test.c$ gcc -c app.c fPIC옵션은 Position-Independent Code의 약자이며 test.o파일을 동적라이브러리로 사용하도록 컴파일 하는 옵션입니다.이렇게 컴파일된 오브젝트 파일을 .so파일로 묶으면 됩니다.$ gcc -shared -fPIC -o libtest.so test.o컴파일은 아래와 같이 하면 됩니다.$ gcc -o ..

Linux C/C++ shared library 컴파일하기 fPIC 옵션 GOT, PLT

Linux C/C++ shared library 컴파일하기   C++   g++ -shared -fPIC -o g++ -shared fPIC -o lib.so code.cpp    C   gcc -shared [-fPIC] -o gcc -shared [-fPIC] -o lib.so code.c -fPIC 옵션은 생략이 가능하지만, 공유라이브러리를 만들 때는 -fPIC 옵션 사용을 권장합니다.(컴파일 종류에 따라서 -fPIC는 필수 옵션입니다.) fPIC를 사용하지 않을경우 재배치 기법을 사용하게 되는데,간략하게, 라이브러리의 주소를 현재 사용하려는 프로세스 주소에서 접근가능하게 재배치 한다는 개념입니다.    공유 라이브러리의 단점 1. 여러 프로세스가 공유라이브러리를 공유하게되면 각 프로세스가 로드 ..