본문 바로가기

abi

(3)
Binary 호환성을 위해 알아야 할것 - ABI, EABI system 내의 binary 호환성을 갖추기 위해서는 가장 먼저 고려해야 할 사항이 바로 ABI를 맞추는 것이다. ABI 란? Application Binary Interface 의 약자로, 바이너리(binary), 즉 실행파일이나 라이브러리 간의 저수준(low level)의 인터페이스를 의미합니다. 호출형식이나 데이터 형식이 동일한 모듈들끼리만 모듈내의 함수 호출이나 데이터 사용이 가능해 지는 것이 당연하겠죠? ABI를 결정하는 가장 큰 요소는 Compiler입니다. C++ Compiler의 경우, 각 compiler별로 name mangling 규칙이 다른데요. 이때문에 서로다른 compiler에서 만들어진 바이너리간의 호출이 불가능해질 수도 있게 됩니다. name mangling 참조 Compil..
호환성에 대한 고찰.. -[펌글] 요즘 고민하고 공감하는 글이라 스크랩 해왔습니다. 호환성 (Compatibility) 이라는 말을 들어보셨나요? .NET 3.0 버젼 Framework에서 .NET 2.0으로 구현했던 Application이 돌아가지 않는다면? JDK 1.6버젼에서 JDK 1.4 Framework 기반의 Application이 돌아가지 않는다면? 새로 나온 제품이 아무리 좋은 기능이 많이 추가 되어 있더라도..예전 제품과 호환이 되지 않는다면, 그 제품은 잘 팔리지 않을 겁니다. 이번 POST 를 통해 우리가 Product 또는 Framework을 만들때 고려해야 되는 호환성과 여러가지 종류에 대해서 공유하고자 합니다. Cross-Version Compatibility 동일한 제품의 다른 버젼에서 만들어진 코드가 호환성을..
C++ 상에서 발생하는 name mangling 에 관한 내용 이 글에서 다뤄보고자 하는 내용은 2가지 입니다. 하나는 name mangling 이고 다른 하나는 extern "C" 입니다. 이 두가지는 c와 c++의 호환성과 관련된 부분이기도 하고 라이브러리를 사용하다보면 가끔 문제를 일으키는 부분이기도 한 부분입니다. 1. name mangling 이란? 간단히 말하면 compiler 가 임의로 함수나 변수의 이름을 변경하는 것을 의미합니다. 그렇다면 왜 함수나 변수의 이름을 변경하는 것인가? 이를 설명하기 위해서는 C++언어의 성격상 function overloading을 먼저 설명해야 하는데요. 함수 오버로딩(function overloading)이란 개발자가 소스코드를 작성할때 같은 이름으로 다른 기능들을 수행하는 함수를 만들수 있도록 하는 기능을 예기합니..