#!/bin/bash # 编译 AvaotaF1 客户端主程序 # 【开发者注意】请将 Tina SDK 放置到 SDK_ROOT 指定的路径 set -e # 错误时退出 # SDK 路径配置 # 【开发者注意】请确保 SDK 位于此路径,或修改此变量 SDK_ROOT="/home/rongye/ProgramFiles/TinaSDK/tina-v821-release" echo "=========================================" echo "AvaotaF1 Client Build Script" echo "=========================================" echo "" # 检查 SDK 路径 if [ ! -d "$SDK_ROOT" ]; then echo "错误:SDK 路径不存在: $SDK_ROOT" echo "请将 Tina SDK 放置到上述路径,或修改脚本中的 SDK_ROOT 变量" exit 1 fi # 保存项目目录(在切换到SDK前) PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 1. 进入 SDK 目录并设置环境 echo "1. 设置编译环境..." cd "$SDK_ROOT" source build/envsetup.sh 2>&1 || true # 忽略 envsetup.sh 的无害警告 # 2. 检查必需的库 echo "" echo "2. 检查依赖库..." STAGING_DIR="$SDK_ROOT/out/v821/avaota_f1/openwrt/staging_dir/target/usr/lib" check_lib() { local lib_name=$1 if [ -f "$STAGING_DIR/$lib_name" ]; then echo " ✓ $lib_name 存在" return 0 else echo " ✗ $lib_name 缺失" return 1 fi } all_libs_ok=true check_lib "libssl.so" || all_libs_ok=false check_lib "libcrypto.so" || all_libs_ok=false check_lib "libcurl.so" || all_libs_ok=false check_lib "libasound.so" || all_libs_ok=false if [ "$all_libs_ok" = false ]; then echo "" echo "警告:部分库缺失,可能导致链接失败" echo "建议在 SDK 中运行 'make menuconfig' 启用相应的库" echo "" fi # 3. 清理并编译 echo "" echo "3. 开始编译..." echo "" echo "项目目录: $PROJECT_DIR" # 检查 src 目录是否存在 if [ ! -d "$PROJECT_DIR/src" ]; then echo "错误:找不到 src 目录" echo "当前路径:$PROJECT_DIR" echo "请确认脚本在项目根目录执行" exit 1 fi # 切换到项目src目录 cd "$PROJECT_DIR/src" # 清理旧文件 echo "清理旧的编译文件..." make clean # 编译主程序 echo "" echo "编译 avaota_client..." make all -j$(nproc) # 4. 检查编译结果 echo "" echo "=========================================" if [ -f "../build/bin/avaota_client" ]; then echo "✅ 编译成功!" echo "=========================================" echo "" echo "输出文件:" echo " ../build/bin/avaota_client" echo "" # 文件信息 file ../build/bin/avaota_client ls -lh ../build/bin/avaota_client echo "" echo "下一步:" echo " 1. 将程序上传到板子:" echo " scp ../build/bin/avaota_client root@<板子IP>:/usr/bin/" echo " 2. 在板子上运行:" echo " avaota_client" else echo "❌ 编译失败" echo "=========================================" exit 1 fi