导航:首页 > 源码编译 > 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内联编译相关的资料

热点内容
短信删除助手文件夹 浏览:686
java办公自动化 浏览:340
php中超链接 浏览:253
linux默认路由设置 浏览:36
linux如何挂载iso 浏览:432
vs程序换文件夹后不能编译 浏览:557
安卓源码编译输入脚本没反应 浏览:47
phpmysql自增 浏览:167
把ppt保存为pdf 浏览:533
汽车密封件加密配件 浏览:887
黑马程序员15天基础班 浏览:560
java调整格式 浏览:521
香港云服务器租用价 浏览:78
linuxsublime3 浏览:560
imac混合硬盘命令 浏览:277
沈阳用什么app租房车 浏览:857
00后高中生都用什么app 浏览:238
戴尔塔式服务器怎么打开独立显卡 浏览:807
医疗程序员招聘 浏览:598
住宿app可砍价是什么意思 浏览:133