使用win10 wsl子系統(tǒng)如何將 rust 程序靜態(tài)編譯為linux可執(zhí)行文件
chapter Ⅰ 事情起因
最近在學(xué)習(xí)rust, 想把一部分java服務(wù)遷移至rust編寫,但由于公司服務(wù)器都是linux系統(tǒng),所以在找windows下交叉編譯為linux可執(zhí)行文件的方法,把bing首頁搜索的結(jié)果試了個遍都不行, 始終報錯“musl-gcc”無法找到,搜遍全網(wǎng)都無法解決。 最終在我不斷嘗試的過程中逐漸發(fā)現(xiàn)解決辦法,遂將整個過程記錄下來。
chapter Ⅱ 安裝方法(windows安裝rust和vs code略過)
1. 啟用wsl 2
根據(jù)微軟的官方文檔,使用下面的命令會默認安裝wsl2 并下載linux鏡像,整個過程可能會重啟一到兩次wsl --install微軟官方文檔: https://learn.microsoft.com/zh-cn/windows/wsl/install下載好后打開微軟應(yīng)用商店,輸入你想裝的linux版本,點擊獲取



下載好后可以點擊啟動或者打開,出現(xiàn)以下提示

不用理他,直接點擊右上角的關(guān)閉,這樣我們下次再打開就是使用的root用戶,不會創(chuàng)建多余的用戶和密碼,當然也可以選擇根據(jù)提示創(chuàng)建用戶和密碼,使用起來除了一些命令需要加sudo之外沒有任何不同。
2. 添加開發(fā)環(huán)境
2.1. 打開rust官網(wǎng),復(fù)制以下命令,安裝rust工具鏈
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安裝完成后提示說環(huán)境變量還沒生效,手動source一下或者直接關(guān)掉重新啟動子系統(tǒng)窗口

完成后運行rustup -V查看一下rust的相關(guān)版本信息

2.2. 安裝rust的linux靜態(tài)編譯工具,等待安裝完成
rustup target add x86_64-unknown-linux-musl因為我已經(jīng)安裝過所以顯示如下圖

2.3. 安裝"musl-gcc"
打開musl官網(wǎng),https://musl.libc.org/ ,下載最新版的源代碼

將下載的壓縮包粘貼到子系統(tǒng)的home路徑下(其他路徑也可以)

直接復(fù)制粘貼,爽歪歪?。?!進入子系統(tǒng),cd /home,然后執(zhí)行tar -zxvf musl-1.2.5.tar.gz解壓縮,下載的哪個版本就解壓哪個版本依次等待執(zhí)行cd musl-1.2.5,./configure, make, make install./configure運行后可能會出現(xiàn)這個提示說沒有c編譯器

不用慌,運行下面這條命令,安裝開發(fā)套件,安裝完畢后繼續(xù)執(zhí)行./configure以及后面的命令yum groupinstall "Development Tools"
2.4. 將"musl-gcc"加入環(huán)境變量
執(zhí)行 vi /etc/profile, 將export PATH=$PATH:/usr/local/musl/bin/;加入到文件最后,關(guān)閉并保存

保存后關(guān)閉窗口,然后重新打開一個子系統(tǒng)窗口輸入musl-gcc -v,如果正確顯示版本信息,則表示已經(jīng)安裝成功

3. linux靜態(tài)編譯
在主系統(tǒng)打開rust項目文件夾,按住shift鍵,點擊鼠標右鍵,點擊在此處打開linux shell

開始編譯cargo build --release --target=x86_64-unknown-linux-musl等待編譯完成,上傳服務(wù)器,運行

enjoy it!
chapter Ⅲ 總結(jié)
因為以前沒有編譯過c++項目,所以對編譯相關(guān)的知識知之甚少,通過本次的實踐嘗試,學(xué)到了一些編譯鏈接的知識,留下一些微不足道的痕跡,希望對你有幫助。同時對于rust的編譯工具鏈表示你在干什么,msvc模式下的控制臺警告至今無法消除

到此這篇關(guān)于使用win10 wsl子系統(tǒng)將 rust 程序靜態(tài)編譯為linux可執(zhí)行文件的文章就介紹到這了,更多相關(guān)rust 程序靜態(tài)編譯為linux可執(zhí)行文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Rust可迭代類型迭代器正確創(chuàng)建自定義可迭代類型的方法
在 Rust 中, 如果一個類型實現(xiàn)了 Iterator, 那么它會被同時實現(xiàn) IntoIterator, 具體邏輯是返回自身, 因為自身就是迭代器,這篇文章主要介紹了Rust可迭代類型迭代器正確創(chuàng)建自定義可迭代類型的方法,需要的朋友可以參考下2023-12-12
Rust 堆內(nèi)存指針 Box的實現(xiàn)示例
在 Rust 中,Box<T>是最基礎(chǔ)、最簡潔的智能指針,核心作用是將數(shù)據(jù)從棧內(nèi)存轉(zhuǎn)移到堆內(nèi)存,并通過獨占所有權(quán)機制管理堆內(nèi)存的分配與釋放,下面就來詳細的介紹一下,感興趣的可以了解一下2026-04-04

