Rust는 크로스 컴파일을 어린이 놀이로 만듭니다.

5138 단어 crossrust

내가 왜 이걸 신경쓰지



최근에 관리자가 Travis CI에서 GitHub 작업으로 전환하도록 요청한 델타 문제this를 해결했습니다.

#399 , #400 , #409 , #411 , #413 , #417 그리고 마지막으로 #418 .

그리고 네.. 보시다시피 저는 거대한 풀 리퀘스트 대신 작은 증분 작업과 초기 피드백을 좋아합니다. 😁

어쨌든 델타 프로젝트는 컴파일 대상이 많고 바이너리는 프로젝트가 태그될 때마다 GitHub 릴리스page에서 자동으로 릴리스됩니다. 달콤한. 😌



x86_64 아키텍처(TLDR: 일반적인 64비트 Intel 또는 AMD 프로세서)에서 동일한 아키텍처를 대상으로 하는 경우 cargo를 사용하여 다른 운영 체제용으로 컴파일하는 것은 매우 간단합니다. 예를 들어 macOS용으로 컴파일하려면 다음을 실행하기만 하면 됩니다.

rustup target add x86_64-apple-darwin
cargo build --target x86_64-apple-darwin


i686(32비트) 또는 ARM 프로세서와 같은 다른 아키텍처용으로 컴파일하려고 할 때 문제가 발생하기 시작합니다. 이 경우 일부 종속 항목을 설치하고 일부 환경 변수를 설정해야 하는데 이는 어려울 수 있습니다. 예를 들어 델타의 이전 지속적 통합 스크립트에서 this은 종속성이 설치되는 방식이었습니다. 못생긴, 나도 알아. 녹 개발자로서 우리는 훌륭한 도구에 익숙하므로 더 나은 방법이 있어야 합니다.

크로스를 만나다



“Zero setup” cross compilation and “cross testing” of Rust crates.



Cross 도구에 대한 설명입니다.

TLDR은 i686 및 x86_64 이외의 아키텍처에 대한 Rust 프로젝트를 컴파일하고 테스트할 수 있게 해준다는 것입니다.
cargo build --target <YOUR_TARGET>를 하는 대신 cross build --target <YOUR_TARGET>를 하면 됩니다. 대상을 기반으로 실제로 cross는 rust-embedded 팀 자체에서 이미 설치 및 구성한 모든 올바른 종속성이 있는 도커 이미지를 실행합니다. 😉 그리고 그게 전부입니다..cargo install cross를 실행하면 Rust의 모든these 대상에 대해 크로스 컴파일할 준비가 된 것입니다. 물론 도커를 제외하고는 다른 의존성이 필요하지 않습니다!

분명히 이것은 크로스에 대한 철저한 개요가 아니므로 관심이 있는 경우 GitHub 페이지를 살펴보는 것이 좋습니다.

GitHub 작업에서 교차



물론 아침 내내 델타 문제에 대한 이상한 우분투 종속성을 설정하려고 화가 난 후 교차에 대해 알았을 때 미리 알지 못하는 것에 대해 매우 어리석다고 느꼈고 이를 연속 배포 델타 파이프라인에 통합하려고 했습니다.

이것이 세상에서 가장 쉬운 일과 같다는 것이 밝혀졌습니다! 이미 사용하고 있던 action-rs/cargo 액션에는 크로스용 내장 액션support이 있었습니다. 이제 나는 심지어 더 멍청하다고 느꼈지만 어쨌든 .. use-cross 변수를 true로 설정하면 완료됩니다!

This은 모든 다른 대상에 대한 전체 델타 프로젝트를 빌드하는 단계입니다. 쉽죠? 😀

Rust GitHub 템플릿에서 교차



Rust GitHub Template 에 대해 알고 있거나 모를 수도 있습니다.

Rust GitHub Template is a template for cargo generate that aims to be a starting point suitable for the vast majority of rust projects that will be hosted on GitHub.



모든 유용한 기능 외에도 이 템플릿은 연속 배포를 설정하므로 프로젝트에 태그를 지정할 때마다 프로젝트가 crates.io에 게시되고 바이너리는 델타에서와 마찬가지로 GitHub 릴리스 페이지에서 릴리스됩니다. 😁

오늘까지 Rust GitHub 템플릿은 x86_64 창, Linux 및 Mac만 지원했지만 Cross를 알게 된 후 저항할 수 없었고 두 가지tier 1 녹 대상인 i686 및 aarch64 Linux 아키텍처에 대한 지원을 추가했습니다. 실제로 이것은 "오래된 Thinkpad"및 "Raspberry Pi"사용자가 귀하에게 많은 감사를 표할 것임을 의미합니다. 😛



This은 결과 연속 배포 단계의 예입니다.

기본적으로 컴파일 종속성을 설정하는 데 매우 유용한 시간을 많이 보낸 후 기본적으로 cross 도구에 대한 사랑을 다른 사람들과 공유하고 싶었습니다. 가능한. 😅

여기까지 읽어주셔서 감사합니다! 또는 에서 저를 찾을 수 있습니다. 안녕! 👋

좋은 웹페이지 즐겨찾기