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```