導航:首頁 > 源碼編譯 > rust內聯編譯

rust內聯編譯

發布時間:2023-05-16 18:57:19

⑴ 為什麼我說Rust是靠譜的編程語言

Rust編程語言
Rust(blog)是一門強調安全、並發、高效的系統編程語言。其中四個關鍵詞,系統編程、安全、並發、高效,是Rust語言的核心特徵,也是區別於其他編程語言的首要因素。
Memory safety without garbage collection
Concurrency without data races
Abstraction without overhead
除此之外,我再補充一些關鍵詞,以便讀者更直觀地了解Rust:靜態類型/編譯式語言/靜態編譯/動態編譯、泛型/函數式/面向對象、模式匹配/ADT、DST/Associated Types/閉包(Closures)、Static/Dynamic/Multiple-Dispatch、 沒有虛擬機(VM)、沒有垃圾收集器(GC)、沒有運行時(Runtime)、沒有空指針/野指針/內存越界/緩沖區溢出/段錯誤、沒有數據競爭(Data Race)……
Rust語言具有特性豐富、設計優良、適用范圍廣等諸多優點。
我(Liigo)從2013年底開始正式關注Rust項目,……至今有一年半了。其中有贊有批,有爭有鬧,也有貢獻源碼。本文所寫的是我這些日子以來的所看、所聞、所感。
判斷一門新的編程語言「是否靠譜」,是主觀性很大的課題。Rust語言今日才剛剛發布1.0版本,它的未來發展走向如何,誰也說不清楚,說到底都是猜測。但是直覺告訴我,如果人靠譜、團隊靠譜、技術能力靠譜、態度靠譜、社區靠譜,這個項目在很大程度上就是靠譜的、值得期待的。
謹以此文,獻給我長久期待的 Rust 1.0!

2. 開放、友好、高效的開源社區
相當徹底的開源項目,開放、透明、友好,進度熱火朝天,動作大刀闊斧。這是我第一次親身參與並觀察到的如此大規模的開源編程語言項目的開發過程。(之前也關注過Go語言項目,但其規模要小得多。)
開放源代碼、GitHub/Git在線開發 hub.com/rust-lang/rust
開放系統設計過程,重要設計項目的提出、討論、評估、決策均在線進行(RFCs)
內部決策過程也公開透明,每周發布會議記錄(meetimg-minutes)
公開接受第三方開發者提交的 Pull Requests,必要時還指導開發
有一個核心團隊(the core team)負責項目的發展方向和最終決策
有大量的(超過 1000 人!)第三方開發者給Rust貢獻源代碼、文檔和測試用例
多次將優秀的第三方開發者吸納進入官方開發團隊和核心團隊
多次在世界各地(包括北京)主辦和協辦小型本地開發者見面會

⑵ 2020-12-24 (一)Rust 入坑安裝、修改國內源、使用musl、優化二進制文件等

為以往項目開發 http api ,准備使用rust開發嘗個鮮,看是否有應用到其他項目中的可能性,本系列內容均為一步一步入坑的實況,未來有時間可能整理的更為系統性,目前僅作記錄。

由於需要支持各個發行版 linux,目前的想法是採用 musl 平台編譯100%靜態鏈接的可執行文件,盡量單文件發布。

文件為靜態鏈接,未優化,包含調試信息,未經 strip,大小 3687136

優化配置完全參考 https://www.aloxaf.com/2018/09/rece_rust_size/ 此文章,在此表示感謝。

文件為靜態鏈接,包含調試信息,未經 strip,大小 1731352

文件為靜態鏈接,不包含調試信息,stripped,大小 292264

Rust 安裝、驗證完畢。

⑶ 【Rust交叉編譯】cross使用較低版本的glibc

眾所周知,glibc已經成為了Linux二進製程序在各種發行版之間不兼容的重要因素了,究其原因,是glibc的版本兼容性機制。比如在高版本glibc的Linux機器上編譯和鏈接的二進制,在低版本glibc的Linux運行會報如下錯誤:

並且,glibc做靜態鏈接時會出現比較奇怪的問題(nss等),所以各發行版一致不推薦glibc靜態鏈接。那麼目前比較好的方案是,需要發行的應用,在比較低版本的glibc做編譯和鏈接。

而Rust官方提供了 cross 這個工具做交叉編譯的工作,而常用的taget x86_64-unknown-linux-gnu 的glibc版本為2.15,對於某些老到掉牙的發行版來說,可能還是會有兼容性問題,所以我基於Centos6打包了一個鏡像: https://hub.docker.com/repository/docker/jmjoy/cross ,內置的glibc版本為2.12。

使用方法:

在Cross.toml中:

⑷ 為什麼Rust這樣的語言還需要C/C++編譯器

需要用 VS 的鏈接器,應該是需要支持 FFI 的原因。Windows 是 Rust 承諾要支持的主要平台之一,這意味著,Rust要有能力和Windows上的靜態庫和動態庫來交互。這時候,MSVC的ABI就是繞不過去的一個問題。可以參考 Rustup 的官方文檔對Windows平台的描述,rust-lang-nursery/rustup.rs。 Windows平台上有兩套ABI,一個是MSVC,一個是MinGW。所以你其實有兩個選擇,要麼安裝 msvc,然後
rustup install stable-x86_64-pc-windows-msvc
要麼安裝 MinGW,然後
rustup install stable-x86_64-pc-windows-gnu
在 Rustup 的文檔上有這么一句話 By default rustup on Windows configures Rust to target the 32-bit MSVC ABI, that is the i686-pc-windows-msvc target triple. 所以,默認安裝的話,你需要安裝 msvc。

閱讀全文

與rust內聯編譯相關的資料

熱點內容
戴爾塔式伺服器怎麼打開獨立顯卡 瀏覽:805
醫療程序員招聘 瀏覽:595
住宿app可砍價是什麼意思 瀏覽:133
java跳出語句 瀏覽:53
javastring個數 瀏覽:928
人工免疫演算法應用 瀏覽:79
有什麼app能收聽俄羅斯廣播電台 瀏覽:34
2015考研紅寶書pdf 瀏覽:443
程序員幾月跳槽合適 瀏覽:443
液壓油可壓縮嗎 瀏覽:944
源泉cad加密文件 瀏覽:127
銀河v10驅動重編譯 瀏覽:891
電腦上文件夾右擊就會崩潰 瀏覽:691
右美維持演算法 瀏覽:938
php基礎編程教程pdf 瀏覽:220
穿越之命令與征服將軍 瀏覽:351
android廣播重復 瀏覽:833
像阿里雲一樣的伺服器 瀏覽:319
水冷空調有壓縮機嗎 瀏覽:479
訪問日本伺服器可以做什麼 瀏覽:434