此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
openEuler Embedded采用的面向嵌入式系统Yocto构建体系,当前openEuler Embedded已经实现了80+软件包的支持,主要编程语言为C/C++。
该信息引用自: https://openeuler.gitee.io/yocto-meta-openeuler/yocto/overview.html
这个项目不需要对Rust语言本身有深入的理解,但是了解Rust语言的设计哲学有助于我们理解这个项目本身的价值和意义。
Rust是一门通用、编译型编程语言。设计准则为“高性能、高可靠性、高生产力”,并且支持泛型、函数式编程、迭代器等现代化语言特性。
为什么要在嵌入式领域使用Rust语言,这两位嵌入式领域的工程师对Rust的评价来说明。
“以往,在嵌入式领域被认为 C/C++ 是不可替代的选择。但现在,我们认为在嵌入式领域能够使用一门现代化的优秀语言真的很棒。” Aleksei Arbuzov, 高级软件工程师, Terminal Technologies
"Rust 使得我们可以比想象中更快、更健壮的软件推向市场。感谢 Rust,让我们将内存安全看得理所当然,同时带有复杂类型系统的零开销语言所带来的其他好处,帮助我们开发出了可维护的软件。Rust 既让我们的客户变得快乐,也让我们的工程师变得快乐。" Marc Brinkmann, CEO, 49nord
“天下苦C语言久矣!” 我
这里说的新增Rust语言支持,代表着能在openEuler Embedded平台上使用“Rust工具链”构建出Rust程序。
在这里“Rust工具链”狭隘地可以认为是两个命令 rustc
和 cargo
。
rustc
:rustc于Rust语言正如GCC于C语言,rustc
是官方支持的Rust编译器,它将源代码编译成二进制程序。cargo
: “Cargo是Rust软件包管理器, Cargo 会下载您 Rust 的包依赖项,编译您的包,生成可分发的包,并将它们上传到crates.io”,这个是官网的解释。 虽然不太类似,但是姑且可以认为 Cargo 有点类似 CMake,虽然它可能比CMake 更强大。一般情况下,我们都倾向于使用 cargo
来构建我们的Rust程序,而非直接使用 rustc
。
所以 “为openEuler Embedded新增Rust语言支持” ** 可以一句话概括为 **
为openEuler Embedded写一个yocto layer或者在meta-yocto-openeuler上修改,以支持Rust程序在该平台的编译、运行
yocto是openEuler Embedded选择的,也是嵌入式领域主流的构建框架,为YOCTO框架新增功能/layer需要
基本熟悉Shell和Python这两门语言 ,并且了解YOCTO构建的基本概念和流程。
例如:层(layer)、菜谱(recipes)、bitbake使用、bb文件的编写等。
这些概念和指南都可以在下面这2个文档找到:
现在开源社区有2个比较流行给Yocto框架新增Rust支持的项目可供参考,分别是:
meta-rust-bin
: https://github.com/rust-embedded/meta-rust-binmeta-rust
: https://github.com/meta-rust/meta-rust这两个项目是两个路线的选择:
meta-rust-bin
选择了 直接使用已经构建好 的rust&cargo工具进行编译Rust程序meta-rust
则选择了从源码开始构建主机端Rust工具链 (rust-native
和 cargo native
) ,然后使用这个工具再进行交叉编译Rust程序。这2种路线的优劣性可以参考 https://github.com/rust-embedded/meta-rust-bin#pre-built-vs-compiled 说明,不详细讨论。
但根据 “面向嵌入式场景的构建系统Yocto应用与思考” https://mp.weixin.qq.com/s/zyC9NFu9SAHYBkD3HTrZYA 中的构建原则,我们 更倾向 于直接使用已经构建好的工具链,即 meta-rust-bin
。
若您想尝试 meta-rust
路线,基于同源原则,请使用openEuler维护的Rust仓源码,即:https://gitee.com/src-openeuler/rust/tree/openEuler-22.03-LTS/
个人认为两种技术都可以进行探索,但是基于已经构建好的工具链 可能 更符合openEuler embedded社区的构建原则。
当然,openEuler embedded 与原生的YOCTO框架是有一些区别的,
所以我们希望申请者能在这2个开源项目的基础上,将其中一个移植到openEuler embedded平台。
CHANGELOG:
登录 后才可以发表评论