Home API & ABI
Post
Cancel

API란?

소프트웨어의 소스 코드 레벨에서 서로 인터페이스 하는 방식을 정의하는 것입니다.

Ex) 화면에 글자를 출력하는 데 필요한 내용을 제공하는 함수의 집합을 API라고 할 수 있습니다.

API를 흔히 ’계약’이라고 부르는데, API는 쌍방 계약이 아니므로 법률적으로 본다면 정확한 비유는 아닙니다.

C 표준에서 정의하고 표준 C 라이브러리에서 구현한 C API가 좋은 예입니다. C API는 메모리 관리나 문자열 처리 루틴 같은 기본함수를 정의합니다.

ABI란?

API가 소스 코드 수준의 인터페이스를 정의한다면 ABI는 특정 아키텍처 간에서 동작하는 소프트웨어 간의 바이너리 인터페이스를 정의합니다. ABI는 애플리케이션 내에서의 상호 동작, 커널과 애플리케이션, 혹은 애플리케이션과 라이브러리 간의 상호 동작에 대해서 정의합니다.

API가 소스 코드 수준의 호환성을 보장한다면, ABI는 바이너리의 호환성을 보장합니다.

ABI는 호출 규약, 바이트 순서, 레지스터 활용, 시스템 콜 실행, 라이브러리 링크, 라이브러리 동작 방식, 바이너리 오브젝트 형식 같은 내용과 관련이 있습니다.

ABI는 커널과 툴체인에서 정의 및 구현합니다.

This post is licensed under GNU AGPL by the author.