簡體   English   中英

Rust 的 Cargo 包會在我的機器上編譯代碼嗎?

[英]Do Rust's Cargo packages compile code on my machine?

當我在 Cargo 項目源代碼中遇到錯誤時,我正在使用 Rust,我更改了代碼以修復錯誤並重新編譯項目,但它仍在使用舊代碼,這讓我思考。

Rust 是在我的機器上編譯貨物包的源代碼還是結果來自雲端? 如果它是在我的機器上編譯的,它只完成一次嗎? 結果在哪里? 如果它們是在雲中編譯的,如果二進制文件是靜態的,那如何保持(Rust)版本之間的兼容性? 或者每個 Rust 版本都有二進制文件嗎?

Cargo 只在本地機器上編譯代碼——沒有內置支持從 Internet 下載預構建的 Rust 二進制文件。 你可以在~/.cargo/registry/src (Linux 路徑)中找到你使用的依賴項的源代碼。 Cargo 將所有生成的二進制文件放在項目的target目錄中; 它甚至不重用在本地機器上編譯的依賴項。

但是,通過安裝和使用sccache ,您實際上可以在本地項目和雲之間共享依賴二進制文件。

對於在本地編輯依賴項的特殊情況,您希望使用覆蓋依賴項的技術在本地修補源代碼。 在緩存中編輯代碼時,Cargo 不會檢查更改,因此您不會看到就地補丁的任何更改。

最后,Cargo 在target/debug/deps中生成的 per-crate .rlib文件相當於 C 目標文件——它們需要全部鏈接在一起以生成有效的可執行文件或庫。 它們之間的 ABI 依賴於 Rust 版本,這就是為什么切換工具鏈會導致它們全部重新構建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM