1
Rust 컴파일러 설치
먼저 Rust 컴파일러를 설치해야 합니다. 컴파일러는 러스트 코드를 기계어로 번역하는 중요한 도구입니다. Rust 공식 사이트(https://www.rust-lang.org/)에서 운영체제에 맞는 설치 패키지를 다운로드할 수 있습니다.
설치 과정은 간단합니다. 다운받은 실행 파일을 실행하고 몇 가지 옵션을 선택하면 됩니다. 기본 옵션대로 진행하면 별도의 설정 없이도 Rust 개발 환경을 구축할 수 있습니다.
또는 공식 문서에 안내된 커맨드라인 명령을 사용해 설치할 수도 있습니다. 예를 들어 Linux나 macOS에서는 다음 명령으로 설치합니다.
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Windows에서는 Powershell을 열고 아래 명령으로 설치합니다.
> iwr https://win.rustup.rs -OutFile Rustup-init.exe; Rustup-init.exe
설치가 완료되면 rustc --version 명령으로 Rust 컴파일러 버전을 확인할 수 있습니다.
Cargo 빌드 도구
Rust에는 Cargo라는 빌드 도구와 패키지 매니저가 기본으로 포함되어 있습니다. Cargo를 사용하면 프로젝트 생성, 빌드, 패키지 관리 등의 작업을 편리하게 수행할 수 있습니다.
새 프로젝트를 만들 때는 cargo new 명령을 사용합니다. 예를 들어 다음과 같이 입력하면 hello_world 디렉터리에 새 프로젝트가 생성됩니다.
$ cargo new hello_world
프로젝트 디렉터리로 이동해서 cargo build를 실행하면 프로젝트가 빌드됩니다. cargo run으로는 바로 실행할 수 있습니다.
$ cd hello_world
$ cargo build
$ cargo run
Cargo는 외부 라이브러리 관리 및 의존성 관리도 지원합니다. Cargo.toml 파일에 필요한 라이브러리를 기록하면 cargo build 실행 시 자동으로 다운로드하고 프로젝트에 포함시킵니다.
Rust 개발 환경 설정
대부분의 코드 편집기나 IDE에서 Rust 플러그인을 지원하므로, 선호하는 편집기에 Rust 확장 기능을 추가하면 편리한 개발 환경을 구축할 수 있습니다.
예를 들어 Visual Studio Code에서는 공식 Rust 확장팩(rust-lang.rust)을 설치하면 코드 자동완성, 문법 강조, 타입 정보 등 다양한 기능을 사용할 수 있습니다.IntelliJ 계열 IDE에서는 공식 Rust 플러그인을 설치하면 됩니다. 안내에 따라 진행하면 러스트 개발 환경을 쉽게 설정할 수 있습니다.
그 외에도 Sublime Text, Atom, Vim 등 다양한 편집기에서 Rust 플러그인을 제공하므로, 본인 취향에 맞는 도구를 선택하면 됩니다.
Rust 코딩 스타일 가이드
Rust 커뮤니티에서는 코딩 스타일 가이드를 제공하고 있습니다. 이 가이드를 따르면 가독성 높고 일관된 코드를 작성할 수 있습니다.
대표적인 권장 사항은 다음과 같습니다.
- 4칸 스페이스를 들여쓰기 단위로 사용합니다.
- 한 줄은 최대 100자로 제한합니다.
- 구문에는 공백을 적절히 삽입해 가독성을 높입니다.
- 명명 규칙에는 snake_case를 사용합니다.
- 주석은 코드 작성 시 문서화에 주력합니다.
또한 rustfmt 툴을 사용하면 코드를 자동으로 정렬하고 스타일 가이드에 맞추어 줍니다. 코드 에디터에서 rustfmt를 지원하는 경우가 많으므로 편리하게 사용할 수 있습니다.
정적 분석 도구
Rust 생태계에는 코드 품질과 안전성을 높여주는 다양한 정적 분석 도구가 있습니다.
- Clippy: 컴파일러 경고보다 더 엄격한 린팅 규칙을 적용해 코드를 점검합니다.
- RustSec: 의존성 라이브러리에 알려진 취약점이 있는지 검사해 줍니다.
- Rust-analyzer: 자동완성, 리팩토링, 정적 분석 등 통합 기능을 제공합니다.
- Miri: Rust 코드를 실행하면서 정확한 디버깅을 수행하는 인터프리터입니다.
이런 도구들은 대부분 Cargo에서 직접 관리할 수 있으므로 쉽게 설치하고 사용할 수 있습니다.
코드 에디터도 이 툴들과 통합되는 경우가 많아 편리하게 사용할 수 있습니다. 프로젝트 환경에 맞춰 적절히 도구들을 활용하면 안전하고 효율적인 Rust 코드를 작성할 수 있습니다.
Rust 개발 환경 구축하기
Rust 디버거 활용하기
디버거는 프로그램의 실행을 중단시키고 변수와 메모리 상태를 검사할 수 있게 해주는 필수 도구입니다. Rust는 LLDB(Linux/macOS)와 GDB(Linux) 디버거를 주로 사용합니다. Visual Studio Code와 같은 IDE에서는 이 디버거들과 통합되어 있어서 편리하게 사용할 수 있습니다. 브레이크 포인트 설정, 변수 감시, 단계적 실행 등 다양한 디버깅 기능을 제공합니다.
터미널에서도 디버거를 직접 실행할 수 있습니다. cargo build 후에 lldb target/debug/myprogram 또는 gdb target/debug/myprogram과 같이 실행하면 됩니다.
rust-gdb 와 rust-lldb 스크립트를 사용하면 Rust 특화된 디버깅 환경을 제공받을 수 있습니다. 이 스크립트는 rust 표준 라이브러리 정보를 로딩하고, Rust 관련 디버깅 명령을 추가해줍니다.
예를 들어 cargo install rust-gdb로 rust-gdb를 설치하면 gdb -x /path/to/rust-gdb target/debug/myprogram처럼 실행할 수 있습니다.
더 나아가 CodeLLDB 나 GDB Dashboard 와 같은 디버거 프론트엔드 도구를 사용하면 보다 편리한 GUI 환경에서 디버깅할 수 있습니다.
프로파일링 도구
Rust 프로그램의 성능을 분석하고 최적화하려면 프로파일링 도구가 필요합니다. Rust에서는 주로 다음 도구들을 사용합니다.
- perf: Linux 기반 시스템에서 제공하는 강력한 성능 분석 도구입니다. 샘플링 방식으로 프로세서 사이클 정보를 얻을 수 있습니다.
- cargo-flamegraph: perf와 연동해 플레이밍 그래프 형태로 프로그램 성능을 시각화해줍니다.
- Valgrind와 통합된 Callgrind: 캐시 미스 정보와 함께 함수 호출 통계를 제공합니다.
예를 들어 perf와 cargo-flamegraph를 사용한다면 다음과 같은 명령으로 프로파일링할 수 있습니다.
# 프로그램 빌드
$ cargo build --release
# perf로 프로파일 정보 수집
$ perf record --call-graph dwarf target/release/myprogram
# flamegraph로 가시화
$ cargo install cargo-flamegraph
$ cargo flamegraph --folded
이렇게 얻은 플레이밍 그래프를 시각적으로 분석하면 프로그램의 병목 지점을 찾아 최적화할 수 있습니다.
DHAT 와 같은 메모리 프로파일러도 있어서 메모리 누수나 비효율적인 메모리 사용을 파악할 수 있습니다.
프로파일링은 성능 최적화에 매우 중요한 과정이므로, 개발 후반에 반드시 수행하여 병목 지점을 개선하는 것이 좋습니다.
Rust를 위한 CI/CD 도구
지속적인 통합(CI)과 지속적인 배포(CD)는 현대 소프트웨어 개발에서 필수적인 실천 사항입니다. Rust 생태계에서도 다양한 CI/CD 도구들이 Rust 프로젝트에 잘 통합되어 제공됩니다.
- GitHub Actions: GitHub 저장소에서 바로 Rust 프로젝트를 빌드, 테스트, 배포할 수 있습니다. Rust 커뮤니티에서 공식 제공하는 액션들이 있습니다.
- Travis CI, AppVeyor: 오랜 전통의 CI 서비스로, Rust 프로젝트에 잘 통합되어 있습니다.
- GitLab CI/CD: GitLab 저장소에 내장된 CI/CD 기능으로, Rust 프로젝트를 쉽게 통합할 수 있습니다.
이들 CI/CD 도구는 대부분 .yml 파일 포맷으로 파이프라인을 정의하고, Rust 프로젝트를 특화해서 지원해 줍니다.
예를 들어 GitHub Actions에서 제공하는 Rust 공식 액션을 사용하면 다음과 같이 간단한 파이프라인을 정의할 수 있습니다.
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- uses: actions-rs/cargo@v1
with:
command: build
args: --release
이렇게 Rust와 통합된 CI/CD 파이프라인을 구축하면, 매번 코드 변경 시마다 자동으로 빌드와 테스트를 거쳐 배포까지 이뤄지므로 개발 생산성이 크게 향상됩니다.
Cross-Compiling 지원
Rust는 Cross-Compiling을 통해 다양한 목표 플랫폼을 지원할 수 있습니다. 예를 들어 Linux 머신에서도 Windows용 실행 프로그램을 만들어낼 수 있습니다.
이를 위해 Rust는 크로스 컴파일 툴체인을 제공합니다. 간단히 rustup 명령으로 목표 플랫폼에 맞는 툴체인을 설치하면 됩니다.
# 예: 윈도우 x86_64 아키텍처용 툴체인 설치
$ rustup target add x86_64-pc-windows-gnu
그리고 cargo 명령에 --target 플래그를 추가해 크로스 컴파일을 수행할 수 있습니다.
# 윈도우용 바이너리 빌드
$ cargo build --target=x86_64-pc-windows-gnu --release
이렇게 만들어진 실행 파일은 해당 목표 플랫폼에서 바로 구동할 수 있습니다.
Rust에는 수많은 플랫폼용 크로스 컴파일 타켓이 미리 정의되어 있습니다. Unix 시스템, 윈도우, iOS, Android 등을 포함해 거의 대부분의 환경을 지원합니다.
이 크로스 컴파일 기능 덕분에 Rust로 작성한 프로그램을 다양한 환경에 배포할 수 있어 활용도가 더 높아집니다. 웹 어셈블리, 임베디드 시스템 등 특수한 환경에도 Rust 프로그램을 적용할 수 있는 것도 크로스 컴파일 기능 때문입니다.
참고 자료
한 고대 문서 이야기
여기 한 고대 문서가 있습니다. 이 문서는 B.C. 1,500년 부터 A.D 100년까지 약 1,600 여 년 동안 기록되었습니다. 이 문서의 저자는 약 40 명입니다. 이 문서의 고대 사본은 25,000 개가 넘으나, 사본간 오
gospel79.tistory.com
유튜브 프리미엄 월 1만원 할인받고 월 4000원에 이용하는 방법
올해 5월부터 월 8000원 정도이던 유튜브 프리미엄 요금이 15000원 정도로 인상됩니다. 각종 OTT 서비스, ChatGPT 같은 서비스들이 늘어나다보니 이런 거 몇 개만 이용하더라도 월 이용요금이 5만원을
stock79.tistory.com
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'IT > Rust 기초 완전 정복' 카테고리의 다른 글
Rust 소유권 개념과 borrowing 이해하기 (6) (0) | 2024.04.22 |
---|---|
Rust 함수 정의와 호출 방식 (5) (0) | 2024.04.22 |
Rust 연산자와 제어문 활용법 (4) (0) | 2024.04.22 |
Rust 변수, 상수 그리고 데이터 타입 이해하기 (3) (0) | 2024.04.22 |
Rust 프로그래밍 언어 소개와 설치 방법 (1) (0) | 2024.04.22 |
댓글