Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

ABI란 무엇인가요?

  • Inicia sesión para ver los comentarios

ABI란 무엇인가요?

  1. 1. ABI Application Binary Interface
  2. 2. ABI란? • 응용 프로그램과 운영체제, 응용 프로그램과 라이브러리 사이에 필요한 저 수준 인터페이스를 정의한다 응용 프로그램운영체제 라이브러리
  3. 3. ABI란? • API랑 똑같은 거 아냐? • 하지만 API보다 ABI가 저수준(binary)이라는 것 • API는 소스 코드에서 사용되고 ABI는 바이너리에서 호환이 된다 • 아키텍처와 운영체제마다 조금씩 차이가 있다 • 윈도 98에서 돌아가던 게 XP에서도 돌아가는 이유는 MS에서 ABI를 지 원하기 때문이다 • 함수 호출 규약을 정의한다
  4. 4. ABI란? • 외부 라이브러리를 사용할 때 중요하다 • 만약 A라는 라이브러리를 사용하고 있을 때 업데이트된 A라이브 러리가 배포되었다. • 외부 라이브러리가 업데이트 됐다고 전체 프로젝트를 다시 컴파일 하고 싶은가? • 만약 업데이트된 라이브러리도 같은 ABI를 지원한다면 프로그램을 변경 하지 않아도 잘 돌아간다 • 서로 다른 버전의 두 라이브러리가 같은 ABI를 가지고 있을 때 “binary- compatible”하다 • 같은 저수준 인터페이스를 가진다는 말
  5. 5. ABI가 바뀌면 컴파일 또 해야 된다 • 간혹 ABI 변경을 피할 수 없을 때도 있다 • 그럼 뭐 컴파일 다시 하는 거지… • ABI는 바뀌었는데 API는 그대로인 경우도 있다 • 이걸 “source compatible”하다고 함 • 근데 이거만 가지고는 동작 보장이 안되기 때문에 ABI가 바뀌면 컴파일 을 다시 해야만 함
  6. 6. ABI를 변경하지 않으려면? • 이런저런 이유로 ABI가 변경되지 않는 쪽이 바람직하다 • 함수 인터페이스를 바꾸면 안 된다 • 리턴 타입, 매개변수 숫자나 타입 등등 • 자료형 정의나 구조체 정의, 상수 정의 등도 바뀌면 안 된다 • 새 함수나 자료형이 추가되는 것은 가능하다
  7. 7. ABI는 어떻게 제공되는가? • ABI는 명시적으로 제공될 필요가 없다 • 사람들이 어셈블리로 코딩한다면(!) 이야기가 달라지지만… • ABI는 특정 언어에 의존적이지 않다. • C언어랑 PASCAL 프로그램도 컴파일 되면 같은 ABI를 쓸 수 있다
  8. 8. 결론 • ABI는 calling convention을 다룬다 • ABI 호환성을 유지하면 라이브러리 유지 / 보수가 편해진다 • ABI 호환성을 유지하려면 추가 외에 기존의 라이브러리 값을 함 부로 바꾸면 안 된다 • ABI 호환성이 깨졌을 경우는 re-compile하면 된다

×