링커
쓰는 이유
- 즉, 여러 개의 데이터 영역으로 쪼개진 저런 오브젝트 파일들을 하나로 합쳐주는 작업이다.
오브젝트 파일의 종류
1) 재배치 가능 파일 : 코드와 데이터로 구성, 다른 오브젝트 파일과 결합하여 실행 가능 파일이나 공유 오브젝트 파일을 생성
2) 실행 가능 파일: 실행 가능한 프로그램을 가지고 있음.
3) 공유 오브젝트 파일 : 코드와 데이터로 구성, 재배치 가능한 오브젝트 파일로 프로그램 실행 시 도적으로 로드 및 링킹되는 파일
심볼테이블
- 코드에 있는 것을 주소로 옮길 수가 없잖아.
- 그러니까, 심볼테이블이라는 것을 만들고 이것의 주소를 결정하는 것이지.
- symbol table은 그냥 section과 위치만 찍어주면 완료
Relocation table
- 밖에 있는 것들은 소스코드 안에서 이게 어떻게 배치될 지 알 수가 없잖아.
- 그러니까, 0x00으로 잡아놓고, relocation table을 만들어 놓자.
- 그리고 나중에 링킹 때, 심볼테이블 보고 해당 찾아내자.
Weak symbol, Strong symbol