나는 그래서 당신은 정적 실행 파일로 파일을 링크 할 때정적으로 링크 된 라이브러리 : 코드가 실행 파일의 연속 영역에 있는지 찾는 방법은 무엇입니까?
가 해당 파일의 내용이 링크시에 포함되어 있는지 답변 this 읽을. 즉, 파일 내용이 실행 파일에 물리적으로 삽입됩니다.
일반적으로이 코드가 인접한 영역에 있는지 궁금합니다. 나는 another에서 이렇게 대답했습니다. 항상 그렇지는 않을 것입니다.
이 가정은 단순한 경우에는 사실 일 수 있지만 결코 보장되지는 않습니다.
나는 바이너리와 소스 코드가 없다고합니다. 그러나 실행 파일은 정적으로 연결된 특정 라이브러리를 사용하여 빌드 된 것입니다.
- 정적으로 링크 된 라이브러리의 코드가 실행 파일의 인접한 영역에 있는지 확인할 수 있습니까? 일반적인 경우 불가능한 경우 휴리스틱 또는 지표가 있습니까?
- 왜 링커가 라이브러리의 코드를 실행 파일의 다른 위치에 배치합니까? 드문 경우가있을 것 같네요, 그렇죠?
질문의 두 번째 링크는 두 번째 질문에 대한 대답 인 것 같습니다 (왜 링커가 코드를 재정렬합니까?). 일반적으로 요청하면 효율성을 위해 그렇게 할 것입니다. 일반적으로이 최적화를 수행하려면 링커에 대한 프로파일 링 정보를 제공해야합니다. '-freorder-functions'에 대한'gcc' 문서를 참조하십시오. – rici