함수를 선언할 때, int function(int a, int b); 이렇게 선언하는 것과 마찬가지로
선언만 들어있지 함수의 몸체는 아닙니다.
"공유 라이브러리 영역"이라는 문장 자체가 구글에서도 잘 없는 것 같은데
제 생각엔 정의(함수의 몸체)부분이 공유 라이브러리 영역에 올라가는 게 아닐까 싶네요.
자세한 것은 저보다 더 많이 아시는 분들이 많으니 좋은 답변 부탁드려야 되겠네요.
2012/07/22
cd80
프로그램에서 함수를 사용하면<br />
프로그램을 디버거로 열어도 함수자체를 살펴볼순 없고<br />
PLT 로 점프하는 코드만 들어있습니다<br />
여기서 PLT 로 점프한후 PLT 에서 GOT 에 저장된<br />
그함수를 라이브러리에서 가져와서 사용하는 형식입니다<br />
<br />
헤더파일에 있는 소스들은 치환되지않고<br />
왠만한 함수들은 /lib/libc.so.6 이라는 shared object 파일에<br />
모두 구현되어있습니다<br />
<br />
라이브러리 함수들이 사용될땐 그 함수들이 코드영역으로 그대로 들어가진 않고<br />
위에서 말씀드린대로 라이브러리에 있는 함수의 주소를 알아온후 그 함수를 호출하는 형태로 작동합니다