최소한의 no_std
프로그램
#![no_main] #![no_std] use core::panic::PanicInfo; #[panic_handler] fn panic(_panic: &PanicInfo) -> ! { loop {} }
- 이 코드는 빈 바이너리로 컴파일됩니다.
std
는 패닉 핸들러를 제공하지만, 우리는 자체적으로 핸들러를 만들어야합니다.- 패닉 핸들러는
panic-halt
와 같은 크레이트를 통해서 만들수도 있습니다. - 타겟에 따라
panic = "abort"
로 컴파일해야 할 수 있습니다. 이는eh_personality
에 관한 오류를 방지하기 위함입니다. main
과 같은 프로그램 진입점이 없습니다. 개발자가 자체적으로 진입점을 정의해야 합니다. 진입점을 정의하는 작업은, 일반적으로 링커 스크립트와 어셈블리 코드를 필요로 합니다.