Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ABI란 무엇인가요?

  • Login to see the comments

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하면 된다

×