(GitHub에 미러링됨)
cproc
QBE를 백엔드로 사용하는 C11 컴파일러입니다. ISC 라이선스에 따라 배포됩니다.
일부 C23 기능과 GNU C 확장도 구현되었습니다.
아직 해야 할 일이 많지만 현재 대부분의 언어를 구현하고 자체, mcpp, gcc 4.7, binutils 등을 포함한 소프트웨어를 구축할 수 있습니다.
이는 8cc, c, lacc 및 scc를 포함한 여러 다른 소형 C 컴파일러에서 영감을 받았습니다.
컴파일러 자체는 표준 C99로 작성되었으며 이를 준수하는 모든 C99 컴파일러로 구축될 수 있습니다.
POSIX 드라이버는 POSIX.1-2008 인터페이스에 의존하며 Makefile
POSIX 호환 make(1)가 필요합니다.
런타임에는 대상 시스템에 대한 QBE, 어셈블러 및 링커가 필요합니다. 전처리기가 아직 구현되지 않았기 때문에 현재 외부 프로세서도 필요합니다.
QBE에서 지원하는 모든 아키텍처가 작동해야 합니다(현재 x86_64, aarch64 및 riscv64).
다음 대상은 지속적인 빌드로 테스트되었으며 부트스트랩하고 모든 테스트를 통과하는 것으로 알려져 있습니다.
x86_64-linux-musl
x86_64-linux-gnu
x86_64-freebsd
aarch64-linux-musl
aarch64-linux-gnu
riscv64-linux-gnu
./configure
실행하여 시스템에 적합한 config.h
및 config.mk
만듭니다. 시스템이 구성 스크립트에서 지원되지 않는 경우 이러한 파일을 수동으로 생성할 수 있습니다. config.h
여러 문자열 배열( static char *[]
)을 정의해야 합니다.
startfiles
: 링크 명령 시작 시 링커에 전달할 개체입니다.endfiles
: 링크 명령(libc 포함)이 끝날 때 링커에 전달할 개체입니다.preprocesscmd
: 전처리기 명령 및 대상 시스템에 필요한 플래그입니다.codegencmd
: QBE 명령 및 명시적 대상 플래그일 수 있습니다.assemblecmd
: 어셈블러 명령입니다.linkcmd
: 링커 명령입니다. 적절한 CC
, CFLAGS
및 LDFLAGS
사용하여 환경이나 config.mk
사용자 정의할 수도 있습니다.
이 작업이 완료되면 다음을 사용하여 빌드할 수 있습니다.
make
Makefile
부트스트래핑에 사용할 수 있는 여러 다른 대상이 포함되어 있습니다. 이러한 대상에는 config.h
에 지정된 도구를 실행하는 기능이 필요합니다.
stage2
: 초기( stage1
) 출력으로 컴파일러를 빌드합니다.stage3
: stage2
출력으로 컴파일러를 빌드합니다.bootstrap
: stage2
및 stage3
컴파일러를 빌드하고 바이트 단위로 동일한지 확인합니다. volatile
한정 유형(#7).long double
유형(#3).~mcf/[email protected]에 메일링 리스트가 있습니다. 일반적인 토론, 질문, 패치 또는 버그 보고서(sr.ht 계정이 없는 경우)에 자유롭게 사용하세요.
문제가 있으면 ~mcf/[email protected]로 보고해 주세요.
패치는 매우 감사합니다. 메일링 리스트(선호)로 보내거나 GitHub 미러에서 풀 요청으로 보내세요.