내 경험상 Gnat과 다른 공급 업체의 컴파일러 간 주요 어려움은 Gnat의 괴상한 파일 명명 요구 사항을 처리 할 것입니다. Rational은 대부분의 컴파일러와 마찬가지로 파일 이름을 사용하여 행복하게 사용할 것이며 내부 파일과의 매핑을 추적합니다. Gnat은 그렇게 용서하지 않습니다 (그러나 내부 매핑 파일은 필요 없습니다).
사람들이 처음부터 모든 것을 작성한다면 제 생각에는 Gnat의 선호 파일 이름을 표준화하는 것이 좋습니다. 이것은 Ada 프로그램 단위당 하나의 소스 파일을 의미하며 파일 이름은 프로그램 단위 이름과 일치하지만 모두 소문자이며 점은 하이픈으로 대체됩니다. 패키지 사양은 .ads
확장자를 사용하고 프로그램 단위 본문은 .adb
을 사용합니다.
그렇지 않으면 코드를 완전히 이식 할 수없는 이유는 많지 않습니다. 필자는 VxWorks OS 타겟을위한 Intermetrics 기반 프론트 엔드로 구축 된 고 충실도 비행 시뮬레이터를 갖춘 한 가지 작업을 수행했습니다. VxWorks OS 타겟은 기본적인 책상 테스트를 위해 Win32 (Win32) 데스크에서 Gnat를 사용하여 다시 구축 할 수있었습니다. 어려운 실시간 스케줄러조차도 구현시 모든 Ada 태스킹 프리미티브를 사용 했으므로 정상적으로 이식되었습니다. IIRC는 배터리 백업에서 TOD 클럭을 설정하는 BIOS 호출과 Real-time Clock 주파수를 설정하는 단일 VxWorks OS 호출 만 처리해야했습니다. 모든 것을 얻는 방법을 알아내는 것 gnatchop
제대로 두 통화를 스터빙하는 것보다 훨씬 오래 걸렸습니다.
어려움이 (불특정 한) 의존성에 달려 있기 때문에 귀하의 질문은 지나치게 광범위합니다. 발생한 특정 문제에 대해이 질문을 편집하거나 새로운 질문을 올리십시오. – trashgod