使用win10 wsl子系統(tǒng)如何將 rust 程序靜態(tài)編譯為linux可執(zhí)行文件
chapter Ⅰ 事情起因
最近在學習rust, 想把一部分java服務遷移至rust編寫,但由于公司服務器都是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下載好后打開微軟應用商店,輸入你想裝的linux版本,點擊獲取



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

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

直接復制粘貼,爽歪歪!??!進入子系統(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等待編譯完成,上傳服務器,運行

enjoy it!
chapter Ⅲ 總結(jié)
因為以前沒有編譯過c++項目,所以對編譯相關(guān)的知識知之甚少,通過本次的實踐嘗試,學到了一些編譯鏈接的知識,留下一些微不足道的痕跡,希望對你有幫助。同時對于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?連接?PostgreSQL?數(shù)據(jù)庫的詳細過程
這篇文章主要介紹了Rust?連接?PostgreSQL?數(shù)據(jù)庫的完整代碼,本文圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01
Rust 利用 chrono 庫實現(xiàn)日期和字符串互相轉(zhuǎn)換的示例
在Rust中,chrono庫提供了強大的日期和時間處理功能,使得日期與字符串之間的轉(zhuǎn)換變得簡單,本文介紹了如何在Rust中使用chrono庫將日期轉(zhuǎn)換成字符串,以及如何將字符串解析為日期,對于需要進行日期時間格式化、解析或進行時區(qū)處理的開發(fā)者來說,chrono庫是一個不可或缺的工具2024-11-11
Rust語言之結(jié)構(gòu)體和枚舉的用途與高級功能詳解
Rust 是一門注重安全性和性能的現(xiàn)代編程語言,其中結(jié)構(gòu)體和枚舉是其強大的數(shù)據(jù)類型之一,了解結(jié)構(gòu)體和枚舉的概念及其高級功能,將使你能夠更加靈活和高效地處理數(shù)據(jù),本文將深入探討 Rust 中的結(jié)構(gòu)體和枚舉,并介紹它們的用途和高級功能2023-10-10

