rust程序靜態(tài)編譯的兩種方法實(shí)例小結(jié)
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)庫文件
需要安裝的有兩個(gè)glibc-static和libstdc++-static;
在這里可以找到這兩個(gè)靜態(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>
頁面向下拉,有個(gè)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)友說方法一某些庫無法成功打包,此時(shí)可以考慮采用方法二的方式打包,但會有性能損失,需自行考量。
到此這篇關(guān)于rust程序靜態(tài)編譯的兩種方法實(shí)例小結(jié)的文章就介紹到這了,更多相關(guān)rust靜態(tài)編譯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Rust操作Redis從入門到生產(chǎn)級應(yīng)用
本文將基于主流的redis-rs庫,帶你全面掌握Rust操作Redis的技巧,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-05-05
Rust開發(fā)環(huán)境搭建到運(yùn)行第一個(gè)程序HelloRust的圖文教程
本文主要介紹了Rust開發(fā)環(huán)境搭建到運(yùn)行第一個(gè)程序HelloRust的圖文教程,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
Rust生成隨機(jī)數(shù)的項(xiàng)目實(shí)踐
Rust標(biāo)準(zhǔn)庫中并沒有隨機(jī)數(shù)生成器,常見的解決方案是使用rand包,本文主要介紹了Rust生成隨機(jī)數(shù)的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Rust實(shí)現(xiàn)構(gòu)建器模式和如何使用Bon庫中的構(gòu)建器
這篇文章主要介紹了Rust實(shí)現(xiàn)構(gòu)建器模式和如何使用Bon庫中的構(gòu)建器,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08

