|
@@ -0,0 +1,179 @@
|
|
|
+# Quick Start
|
|
|
+
|
|
|
+本指南旨在教您快速上手DADK。
|
|
|
+
|
|
|
+DADK是一个用于管理DragonOS的应用编译打包的工具。您可以通过声明配置文件的方式,
|
|
|
+把您的应用程序打包到DragonOS中。
|
|
|
+
|
|
|
+## 安装
|
|
|
+
|
|
|
+目前,DADK版本与DragonOS的版本是绑定的,一般来说,DragonOS在编译的时候就会帮您安装正确版本的dadk。
|
|
|
+
|
|
|
+如果您需要手动安装,可以在dragonos的`user/Makefile`中找到匹配的dadk版本。
|
|
|
+
|
|
|
+
|
|
|
+```
|
|
|
+MIN_DADK_VERSION = 0.2.0
|
|
|
+```
|
|
|
+
|
|
|
+::: warning 注意兼容性变化
|
|
|
+请注意,由于dadk重构的原因,0.2.0版本之前的dadk版本将不再兼容。这意味着您升级到0.2.0版本后,将无法再使用它去编译旧版本的DragonOS(可以降级)。
|
|
|
+:::
|
|
|
+
|
|
|
+您可以通过以下命令安装dadk:
|
|
|
+```shell
|
|
|
+cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag <版本号>
|
|
|
+```
|
|
|
+
|
|
|
+比如,对于0.2.0版本,您可以使用以下命令安装: `(注意版本号前面有个v)`
|
|
|
+```shell
|
|
|
+cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag v0.2.0
|
|
|
+```
|
|
|
+
|
|
|
+## 打包你的第一个应用
|
|
|
+
|
|
|
+在安装完成后,您可以使用dadk来打包您的第一个应用。
|
|
|
+
|
|
|
+使用以下命令进入到DragonOS仓库的`user/apps/`目录:
|
|
|
+
|
|
|
+```shell
|
|
|
+cd DragonOS/user/apps/
|
|
|
+```
|
|
|
+
|
|
|
+### 编写代码
|
|
|
+
|
|
|
+然后,为你的应用创建一个目录:
|
|
|
+```shell
|
|
|
+mkdir myapp
|
|
|
+cd myapp
|
|
|
+```
|
|
|
+
|
|
|
+接下来,在该目录下创建一个`main.c`文件:
|
|
|
+
|
|
|
+```shell
|
|
|
+touch main.c
|
|
|
+```
|
|
|
+
|
|
|
+并向`main.c`写入以下内容:
|
|
|
+
|
|
|
+```c
|
|
|
+
|
|
|
+#include <stdio.h>
|
|
|
+
|
|
|
+int main()
|
|
|
+{
|
|
|
+ printf("Hello World!\n");
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+然后,在该目录下创建一个`Makefile`文件:
|
|
|
+
|
|
|
+```shell
|
|
|
+touch Makefile
|
|
|
+```
|
|
|
+
|
|
|
+并向`Makefile`写入以下内容:
|
|
|
+```Makefile
|
|
|
+ifeq ($(ARCH), x86_64)
|
|
|
+ CROSS_COMPILE=x86_64-linux-musl-
|
|
|
+else ifeq ($(ARCH), riscv64)
|
|
|
+ CROSS_COMPILE=riscv64-linux-musl-
|
|
|
+endif
|
|
|
+
|
|
|
+CC=$(CROSS_COMPILE)gcc
|
|
|
+
|
|
|
+.PHONY: all
|
|
|
+all: main.c
|
|
|
+ $(CC) -static -o helloworld main.c
|
|
|
+
|
|
|
+.PHONY: install clean
|
|
|
+install: all
|
|
|
+ mv helloworld $(DADK_CURRENT_BUILD_DIR)/helloworld
|
|
|
+
|
|
|
+clean:
|
|
|
+ rm helloworld *.o
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### 编写dadk用户程序配置文件
|
|
|
+
|
|
|
+最后,在DragonOS仓库的`user/dadk/config`目录下创建一个`myapp.toml`文件:
|
|
|
+
|
|
|
+```shell
|
|
|
+cd DragonOS/user/dadk/config
|
|
|
+touch myapp.toml
|
|
|
+```
|
|
|
+
|
|
|
+在`myapp.toml`文件中写入以下内容,用于描述你的应用的构建方式:
|
|
|
+
|
|
|
+```toml
|
|
|
+# 用户程序名称
|
|
|
+name = "helloworld"
|
|
|
+# 版本号
|
|
|
+version = "0.1.0"
|
|
|
+# 用户程序描述信息
|
|
|
+description = "一个用来测试helloworld的app"
|
|
|
+
|
|
|
+# (可选)默认: false 是否只构建一次,如果为true,DADK会在构建成功后,将构建结果缓存起来,下次构建时,直接使用缓存的构建结果
|
|
|
+build-once = false
|
|
|
+# (可选) 默认: false 是否只安装一次,如果为true,DADK会在安装成功后,不再重复安装
|
|
|
+install-once = false
|
|
|
+# 目标架构
|
|
|
+# 可选值:"x86_64", "aarch64", "riscv64"
|
|
|
+target-arch = ["x86_64"]
|
|
|
+
|
|
|
+# 任务源
|
|
|
+[task-source]
|
|
|
+# 构建类型
|
|
|
+# 可选值:"build-from_source", "install-from-prebuilt"
|
|
|
+type = "build-from-source"
|
|
|
+# 构建来源
|
|
|
+# "build_from_source" 可选值:"git", "local", "archive"
|
|
|
+# "install_from_prebuilt" 可选值:"local", "archive"
|
|
|
+source = "local"
|
|
|
+# 路径或URL
|
|
|
+source-path = "user/apps/helloworld"
|
|
|
+
|
|
|
+# 构建相关信息
|
|
|
+[build]
|
|
|
+# (可选)构建命令
|
|
|
+build-command = "make install"
|
|
|
+
|
|
|
+# 安装相关信息
|
|
|
+[install]
|
|
|
+# (可选)安装到DragonOS的路径
|
|
|
+in-dragonos-path = "/bin"
|
|
|
+
|
|
|
+# clean相关信息
|
|
|
+[clean]
|
|
|
+# (可选)清除命令
|
|
|
+clean-command = "make clean"
|
|
|
+```
|
|
|
+上面这就是一个简单的dadk应用的配置文件。完整的模版请见:[userapp_config.toml](https://github.com/DragonOS-Community/DADK/blob/main/dadk-config/templates/config/userapp_config.toml)
|
|
|
+
|
|
|
+### 运行DragonOS
|
|
|
+
|
|
|
+在完成上述步骤后,您可以使用以下命令来运行DragonOS:
|
|
|
+
|
|
|
+```shell
|
|
|
+make run
|
|
|
+```
|
|
|
+
|
|
|
+更详细的运行命令请参考:[构建DragonOS](https://docs.dragonos.org.cn/introduction/build_system.html#build-system-command)
|
|
|
+
|
|
|
+### 测试你的应用
|
|
|
+
|
|
|
+在DragonOS启动后,您可以在终端中输入以下命令来测试您的应用:
|
|
|
+
|
|
|
+```shell
|
|
|
+cd /bin
|
|
|
+./helloworld
|
|
|
+```
|
|
|
+
|
|
|
+如果一切正常,您应该会看到以下输出:
|
|
|
+
|
|
|
+```text
|
|
|
+Hello World!
|
|
|
+```
|