xref: /DragonOS/docs/userland/appdev/rust-quick-start.md (revision 182b778a3ca8c633b605ae7dd90a5e9f1131cc6d)
1*5eaf536dSLoGin# Rust应用开发快速入门
2*5eaf536dSLoGin
3*5eaf536dSLoGin## 编译环境
4*5eaf536dSLoGin
5*5eaf536dSLoGin  DragonOS与Linux具有部分二进制兼容性,因此可以使用Linux的Rust编译器进行编译,但是需要进行一些配置:
6*5eaf536dSLoGin
7*5eaf536dSLoGin您可以参考DragonOS的`tools/bootstrap.sh`中,`initialize_userland_musl_toolchain()`函数的实现,进行配置。
8*5eaf536dSLoGin或者,只要运行一下bootstrap.sh就可以了。
9*5eaf536dSLoGin
10*5eaf536dSLoGin主要是因为DragonOS还不支持动态链接,但是默认的工具链里面,包含了动态链接解释器相关的代码,因此像脚本内那样,进行替换就能运行。
11*5eaf536dSLoGin
12*5eaf536dSLoGin## 配置项目
13*5eaf536dSLoGin
14*5eaf536dSLoGin### 从模板创建
15*5eaf536dSLoGin
16*5eaf536dSLoGin:::{note}
17*5eaf536dSLoGin该功能需要dadk 0.1.4及以上版本方能支持
18*5eaf536dSLoGin:::
19*5eaf536dSLoGin
20*5eaf536dSLoGin1. 使用DragonOS的tools目录下的`bootstrap.sh`脚本初始化环境
21*5eaf536dSLoGin2. 在终端输入`cargo install cargo-generate`
22*5eaf536dSLoGin3. 在终端输入
23*5eaf536dSLoGin
24*5eaf536dSLoGin```shell
25*5eaf536dSLoGincargo generate --git https://github.com/DragonOS-Community/Rust-App-Template
26*5eaf536dSLoGin```
27*5eaf536dSLoGin即可创建项目。如果您的网络较慢,请使用镜像站
28*5eaf536dSLoGin```shell
29*5eaf536dSLoGincargo generate --git https://git.mirrors.dragonos.org/DragonOS-Community/Rust-App-Template
30*5eaf536dSLoGin```
31*5eaf536dSLoGin
32*5eaf536dSLoGin4. 使用`cargo run`来运行项目
33*5eaf536dSLoGin5. 在DragonOS的`user/dadk/config`目录下,使用`dadk new`命令,创建编译配置,安装到DragonOS的`/`目录下。
34*5eaf536dSLoGin(在dadk的编译命令选项处,请使用Makefile里面的`make install`配置进行编译、安装)
35*5eaf536dSLoGin6. 编译DragonOS即可安装
36*5eaf536dSLoGin
37*5eaf536dSLoGin### 手动配置
38*5eaf536dSLoGin
39*5eaf536dSLoGin如果您需要移植别的库/程序到DragonOS,请参考模板内的配置。
40*5eaf536dSLoGin
41*5eaf536dSLoGin由于DragonOS目前不支持动态链接,因此目前需要在RUSTFLAGS里面指定`-C target-feature=+crt-static -C link-arg=-no-pie`
42