다양한 32비트 에뮬레이션 모드 간의 GNU 링커 차이점은 무엇입니까?

다양한 32비트 에뮬레이션 모드 간의 GNU 링커 차이점은 무엇입니까?

에서 386비트 옵션과 32비트 옵션의 차이점은 무엇입니까 ld -V?

  • elf32_x86_64
  • elf_i386
  • i386linux
  • i386pep
  • i386pe

그리고 이러한 "에뮬레이션 모드"에 대한 문서는 어디서 찾을 수 있나요?

답변1

"시뮬레이션"은 다른 것을 선택합니다링커 스크립트; /usr/lib/ldscripts시스템에서 스크립트 자체를 찾을 수 있습니다. 귀하가 나열한 시뮬레이션은 다음과 같습니다.

  • elf32_x86_64: x64-32용 ELF, 일명x32— 32비트 x86-64 바이너리
  • elf_i386: i386용 ELF — 32비트 i386 바이너리
  • i386linux: a.i386 중
  • i386pep: x86-64용 PE+ — Windows 형식 64비트 바이너리
  • i386pe:PE for i386 — Windows 형식의 32비트 바이너리

링커 스크립트는 출력 형식과 아키텍처, 검색 디렉터리( ld라이브러리를 찾을 위치), 바이너리의 부분 등을 정의합니다.

링커 스크립트 형식은 잘 문서화되어 있지만(위 참조) 사용 가능한 스크립트는 그렇지 않습니다. 대부분의 경우 GCC는 올바른 스크립트를 지정하므로 걱정할 필요가 없지만 다른 경우에는 읽게 됩니다. 링커 스크립트 자체가 무엇을 하는지 파악합니다.

관련 정보