欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

rust程序靜態(tài)編譯的兩種方法實(shí)例小結(jié)

 更新時間:2025年05月08日 08:48:34   作者:Jiajie6591  
這篇文章主要介紹了rust程序靜態(tài)編譯的兩種方法總結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

1. 概述

經(jīng)過我的探索,總結(jié)了兩種rust程序靜態(tài)編譯的方法,理論上兩種方法都適用于windows、mac os和linux(mac os未驗(yàn)證),實(shí)測方法一性能比方法二好,現(xiàn)總結(jié)如下,希望能夠幫到你.

2.方法一

2.1 添加配置文件

在項(xiàng)目的同級文件夾下新建“.cargo/config.toml”文件,根據(jù)使用的系統(tǒng),添加下面的配置

#windows
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]`
#linux
[target.x86_64-unknown-linux-gnu]
rustflags = ["-C", "target-feature=+crt-static"]

理論上mac os也可以,將[target.x86_64-unknown-linux-gnu]替換為自己使用的工具鏈就可以了

2.2 打包運(yùn)行

2.2.1 winsows

在windows下運(yùn)行cargo build --release就可以直接打包為靜態(tài)鏈接的程序了;

2.2.2 linux

在linux下運(yùn)行cargo build --release --target=x86_64-unknown-linux-gnu,可能會出現(xiàn)如下提示
/usr/bin/ld: cannot find -lxxx,這是缺少gcc-libc的靜態(tài)庫文件
需要安裝的有兩個glibc-staticlibstdc++-static;
在這里可以找到這兩個靜態(tài)庫: https://oraclelinux.pkgs.org/這里是oracle linux9 的鏈接:https://oraclelinux.pkgs.org/9/ol9-codeready-builder-x86_64/glibc-static-2.34-125.0.1.el9_5.8.x86_64.rpm.html, https://oraclelinux.pkgs.org/9/ol9-codeready-builder-x86_64/libstdc++-static-11.5.0-5.0.1.el9_5.x86_64.rpm.html

注意要選擇自己對應(yīng)的系統(tǒng)?。。?/strong>

頁面向下拉,有個install howto 的標(biāo)題,直接運(yùn)行里面的命令(如截圖里的dnf --enablerepo=ol9_codeready_builder install libstdc++-static)就可以安裝了,安裝完就可以愉快的打包了;

3.方法二

此方法為使用musl庫打包為靜態(tài)鏈接,參考我的另一篇文章,實(shí)測該方法打包的靜態(tài)文件性能會比gcc稍差一點(diǎn);
使用musl將rust程序靜態(tài)編譯

4.總結(jié)

優(yōu)先推薦使用方法一,但據(jù)網(wǎng)友說方法一某些庫無法成功打包,此時可以考慮采用方法二的方式打包,但會有性能損失,需自行考量。

到此這篇關(guān)于rust程序靜態(tài)編譯的兩種方法實(shí)例小結(jié)的文章就介紹到這了,更多相關(guān)rust靜態(tài)編譯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rust?use關(guān)鍵字妙用及模塊內(nèi)容拆分方法

    Rust?use關(guān)鍵字妙用及模塊內(nèi)容拆分方法

    這篇文章主要介紹了Rust?use關(guān)鍵字妙用|模塊內(nèi)容拆分,文中還給大家介紹use關(guān)鍵字的習(xí)慣用法,快速引用自定義模塊內(nèi)容或標(biāo)準(zhǔn)庫,以此優(yōu)化代碼書寫,需要的朋友可以參考下
    2022-09-09
  • 詳解Rust中泛型的使用

    詳解Rust中泛型的使用

    泛型是一種在編寫代碼時不指定具體類型,而在使用時再確定類型的編程技巧,本文將詳細(xì)介紹?Rust?中泛型的相關(guān)概念和用法,希望對大家有所幫助
    2023-06-06
  • 使用systemd部署r-nacos的操作方法

    使用systemd部署r-nacos的操作方法

    r-nacos是一個用rust實(shí)現(xiàn)的nacos服務(wù),我們用它平替java?nacos以降低服務(wù)占用內(nèi)存,提升服務(wù)的穩(wěn)定性,這篇文章主要介紹了使用systemd部署r-nacos,需要的朋友可以參考下
    2024-03-03
  • Rust使用csv crate構(gòu)建CSV文件讀取器的全過程

    Rust使用csv crate構(gòu)建CSV文件讀取器的全過程

    這篇文章主要學(xué)習(xí)如何基于Rust使用csv這個crate構(gòu)建一個CSV文件讀取器的過程,學(xué)習(xí)了csv相關(guān)的用法以及一些往期學(xué)過的crate的復(fù)習(xí),兼顧了實(shí)用性和Rust的學(xué)習(xí),需要的朋友可以參考下
    2024-05-05
  • Rust中into和from用法及區(qū)別介紹

    Rust中into和from用法及區(qū)別介紹

    這篇文章主要介紹了Rust中的?into和from使用及區(qū)別介紹,into和from是Rust語言中兩個用于類型轉(zhuǎn)換的函數(shù),它們分別屬于Into和From這兩個trait,本文通過實(shí)例代碼詳細(xì)講解,需要的朋友可以參考下
    2023-04-04
  • Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開發(fā)流程

    Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開發(fā)流程

    Rust中的Crate是編譯器處理的最小代碼單元,可以是二進(jìn)制或庫,每個Crate由一個CrateRoot文件(通常是src/main.rs或src/lib.rs)定義,本文給大家介紹Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開發(fā)流程,感興趣的朋友一起看看吧
    2025-02-02
  • Rust中自定義Debug調(diào)試輸出的示例詳解

    Rust中自定義Debug調(diào)試輸出的示例詳解

    這篇文章主要介紹了Rust中自定義Debug調(diào)試輸出的示例詳解,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 使用Cargo工具高效創(chuàng)建Rust項(xiàng)目

    使用Cargo工具高效創(chuàng)建Rust項(xiàng)目

    這篇文章主要介紹了使用Cargo工具高效創(chuàng)建Rust項(xiàng)目,本文有關(guān)Cargo工具的使用和Rust輸入輸出知識感興趣的朋友一起看看吧
    2022-08-08
  • Rust常用特型之Drop特型

    Rust常用特型之Drop特型

    本文主要介紹了Rust常用特型之Drop特型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • Go調(diào)用Rust方法及外部函數(shù)接口前置

    Go調(diào)用Rust方法及外部函數(shù)接口前置

    這篇文章主要為大家介紹了Go調(diào)用Rust方法及外部函數(shù)接口前置示例實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論