xref: /DADK/docs/user-manual/quickstart.md (revision 2c1a697be787a4320d89f007f63fbc0fc2be2b67)
1# Quick Start
2
3本指南旨在教您快速上手DADK。
4
5DADK是一个用于管理DragonOS的应用编译打包的工具。您可以通过声明配置文件的方式,
6把您的应用程序打包到DragonOS中。
7
8## 安装
9
10目前,DADK版本与DragonOS的版本是绑定的,一般来说,DragonOS在编译的时候就会帮您安装正确版本的dadk。
11
12如果您需要手动安装,可以在dragonos的`user/Makefile`中找到匹配的dadk版本。
13
14
15```
16MIN_DADK_VERSION = 0.2.0
17```
18
19::: warning 注意兼容性变化
20请注意,由于dadk重构的原因,0.2.0版本之前的dadk版本将不再兼容。这意味着您升级到0.2.0版本后,将无法再使用它去编译旧版本的DragonOS(可以降级)。
21:::
22
23您可以通过以下命令安装dadk:
24```shell
25cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag <版本号>
26```
27
28比如,对于0.2.0版本,您可以使用以下命令安装: `(注意版本号前面有个v)`
29```shell
30cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag v0.2.0
31```
32
33## 打包你的第一个应用
34
35在安装完成后,您可以使用dadk来打包您的第一个应用。
36
37使用以下命令进入到DragonOS仓库的`user/apps/`目录:
38
39```shell
40cd DragonOS/user/apps/
41```
42
43### 编写代码
44
45然后,为你的应用创建一个目录:
46```shell
47mkdir myapp
48cd myapp
49```
50
51接下来,在该目录下创建一个`main.c`文件:
52
53```shell
54touch main.c
55```
56
57并向`main.c`写入以下内容:
58
59```c
60
61#include <stdio.h>
62
63int main()
64{
65    printf("Hello World!\n");
66    return 0;
67}
68
69```
70
71然后,在该目录下创建一个`Makefile`文件:
72
73```shell
74touch Makefile
75```
76
77并向`Makefile`写入以下内容:
78```Makefile
79ifeq ($(ARCH), x86_64)
80	CROSS_COMPILE=x86_64-linux-musl-
81else ifeq ($(ARCH), riscv64)
82	CROSS_COMPILE=riscv64-linux-musl-
83endif
84
85CC=$(CROSS_COMPILE)gcc
86
87.PHONY: all
88all: main.c
89	$(CC) -static -o helloworld main.c
90
91.PHONY: install clean
92install: all
93	mv helloworld $(DADK_CURRENT_BUILD_DIR)/helloworld
94
95clean:
96	rm helloworld *.o
97
98```
99
100### 编写dadk用户程序配置文件
101
102最后,在DragonOS仓库的`user/dadk/config`目录下创建一个`myapp.toml`文件:
103
104```shell
105cd DragonOS/user/dadk/config
106touch myapp.toml
107```
108
109在`myapp.toml`文件中写入以下内容,用于描述你的应用的构建方式:
110
111```toml
112# 用户程序名称
113name = "helloworld"
114# 版本号
115version = "0.1.0"
116# 用户程序描述信息
117description = "一个用来测试helloworld的app"
118
119# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果
120build-once = false
121#  (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装
122install-once = false
123# 目标架构
124# 可选值:"x86_64", "aarch64", "riscv64"
125target-arch = ["x86_64"]
126
127# 任务源
128[task-source]
129# 构建类型
130# 可选值:"build-from_source", "install-from-prebuilt"
131type = "build-from-source"
132# 构建来源
133# "build_from_source" 可选值:"git", "local", "archive"
134# "install_from_prebuilt" 可选值:"local", "archive"
135source = "local"
136# 路径或URL
137source-path = "user/apps/helloworld"
138
139# 构建相关信息
140[build]
141# (可选)构建命令
142build-command = "make install"
143
144# 安装相关信息
145[install]
146# (可选)安装到DragonOS的路径
147in-dragonos-path = "/bin"
148
149# clean相关信息
150[clean]
151# (可选)清除命令
152clean-command = "make clean"
153```
154上面这就是一个简单的dadk应用的配置文件。完整的模版请见:[userapp_config.toml](https://github.com/DragonOS-Community/DADK/blob/main/dadk-config/templates/config/userapp_config.toml)
155
156### 运行DragonOS
157
158在完成上述步骤后,您可以使用以下命令来运行DragonOS:
159
160```shell
161make run
162```
163
164更详细的运行命令请参考:[构建DragonOS](https://docs.dragonos.org.cn/introduction/build_system.html#build-system-command)
165
166### 测试你的应用
167
168在DragonOS启动后,您可以在终端中输入以下命令来测试您的应用:
169
170```shell
171cd /bin
172./helloworld
173```
174
175如果一切正常,您应该会看到以下输出:
176
177```text
178Hello World!
179```