跳到主要内容

构建指南

本文档说明 XSTAR 的构建配置、命令及故障排查。

环境与工具链​

  • 操作系统:Linux(推荐 Ubuntu 24.04 或更高版本)
  • 构建工具:make、git

按目标平台安装 GCC 工具链:

# x64(本地 GCC)
sudo apt-get install build-essential gcc make

# x64 图形版(仅 x64-linux-sdl-helloworld)额外需要 SDL3
sudo apt-get install libsdl3-dev

# ARM32 / ARM64
sudo apt-get install gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu

# RISC-V
sudo apt-get install gcc-riscv64-unknown-elf

交叉编译前缀由各项目 xstar.defconfig 的 CONFIG_CROSS_COMPILE 预设,无需手动指定。部分示例:

项目CROSS_COMPILE
x64-linux-sdl-helloworld""(本地 GCC)
arm32-baremetal-t113s3arm-linux-gnueabihf-
arm64-linux-helloworldaarch64-linux-gnu-
riscv32-linux-v821-helloworldriscv32-linux-musl-

构建步骤​

# 从根目录
make <project-name>/xstar.defconfig
make -j$(nproc)
./projects/<project-name>/output/xstar

# 或从项目目录
cd projects/<project-name>
make defconfig && make
./output/xstar

项目 Makefile 是轻量级包装器,委托根目录 Makefile 执行。支持增量编译,直接 make 只重编修改过的文件。

make 命令​

命令作用保留配置
make <project>/xstar.defconfig应用项目默认配置—
make / make -j$(nproc)构建(-j 并行加速)✓
make menuconfig交互式配置菜单✓
make defconfig项目默认配置(仅项目目录内)✓
make clean清理 .o/.a/可执行文件/.d,保留 .config 与 .config.h✓
make distclean清理全部,含 .config/.config.h/.config.old,需重新 defconfig✗

配置选项​

make menuconfig 打开类似 Linux 内核的交互式配置,顶层菜单:

  1. Compile Options — CONFIG_CROSS_COMPILE、架构(ARM32/64、RISC-V32/64、X32/X64)、CONFIG_OPTIMIZE_LEVEL(默认 -O3)
  2. Project Selection — CONFIG_PROJECT_NAME 及项目特定选项
  3. Package Libraries — CONFIG_PKG_LIBC/LIBM/LIBCJSON/LVGL/WBOXTEST/XUI 等
  4. Xstar Options — CONFIG_XSTAR、CONFIG_XSTAR_LOG、CONFIG_XSTAR_LOGGER_SIZE、CONFIG_XSTAR_MAX_PATH、CONFIG_XSTAR_WINDOW_ORIENTATION
  5. Device Drivers — 50+设备,每类下具体驱动如 CONFIG_DRV_CLK_FIXED、CONFIG_DRV_I2C_GPIO
  6. Command Configuration — 每个 Shell 命令可单独启停,如 CONFIG_CMD_HELP、CONFIG_CMD_ECHO

内核子系统(audio/core/font/graphic/shell/time/vision/window/xfs)、LibX、XOS 目前无条件编译,不可通过 Kconfig 禁用。

配置保存在项目根目录 .config,并生成 .config.h 供源码使用。示例:

CONFIG_CROSS_COMPILE=""
CONFIG_ARCH_X64=y
CONFIG_ARCH="x64"
CONFIG_OPTIMIZE_LEVEL="-O3"
CONFIG_PROJECT_NAME="x64-linux-sdl-helloworld"
CONFIG_XSTAR=y
CONFIG_XSTAR_LOG=y
CONFIG_DRV_CLK_FIXED=y
CONFIG_CMD_HELP=y
CONFIG_PKG_LVGL=y

也可用环境变量覆盖交叉前缀:

export CROSS_COMPILE=aarch64-linux-gnu-
make <project>/xstar.defconfig
make

可用项目​

架构项目
ARM32 baremetalarm32-baremetal-rk3506, arm32-baremetal-rv1103, arm32-baremetal-rv1106, arm32-baremetal-t113s3
ARM32 Linuxarm32-linux-helloworld
ARM64 baremetalarm64-baremetal-t527
ARM64 Linuxarm64-linux-helloworld
RISC-V32 baremetalriscv32-baremetal-v821, riscv32-baremetal-v821-test
RISC-V32 FreeRTOSriscv32-freertos-v821
RISC-V32 Linuxriscv32-linux-v821-helloworld
RISC-V64 Linuxriscv64-linux-helloworld
x64 Linuxx64-linux-helloworld, x64-linux-sdl-helloworld

每个项目位于 projects/<project-name>/,含 Makefile、xstar.defconfig、xstarcfg.h、main.c、平台实现目录(linux/ 或 baremetal/)及 romdisk/(含 dtree/default.json 设备树与 assets/ 资源)。

构建输出​

产物为 projects/<project-name>/output/xstar。ROMDISK(dtree/default.json + assets/)通过链接器符号 __romdisk_start/__romdisk_end 嵌入可执行文件。默认带调试信息(-g -ggdb),可用 GDB 调试:

gdb ./projects/<project-name>/output/xstar

常见问题​

现象解决
arm-linux-gnueabihf-gcc: command not found安装对应平台工具链,或检查 CONFIG_CROSS_COMPILE
No rule to make target '<project>/xstar.defconfig'项目名拼写错误或不在 projects/ 下
fatal error: xstarcfg.h: No such file or directory先运行 make <project>/xstar.defconfig 生成 .config.h
undefined reference to 'some_function'用 make menuconfig 检查相关驱动/模块是否启用
No rule to make target 'menuconfig'先应用项目配置;并装 ncurses:sudo apt-get install libncurses5-dev