diff --git a/scripts/install_deps.sh b/scripts/install_deps.sh index 63d33d7..6b33701 100755 --- a/scripts/install_deps.sh +++ b/scripts/install_deps.sh @@ -21,7 +21,7 @@ echo -e "${BLUE}╚════════════════════ echo "" if [ "$(id -u)" -ne 0 ]; then - echo -e "${RED}错误: 请使用 sudo 运行${NC}" + echo -e "${RED}错误: 请使用 sudo 运行此脚本${NC}" exit 1 fi @@ -87,9 +87,14 @@ echo -e "${YELLOW}[2/4] 安装 Rockchip MPP...${NC}" cd "$PROJECT_DIR/third_party/mpp" -# 创建完整的 version.h 文件 -mkdir -p build/cmake mpp -cat > mpp/version.h << 'EOF' +# 清理旧的构建 +rm -rf build + +# 创建 version.in 和 version.h +mkdir -p build/cmake + +# version.in 用于 CMake configure_file +cat > build/cmake/version.in << 'EOF' #ifndef MPP_VERSION_H #define MPP_VERSION_H @@ -97,7 +102,6 @@ cat > mpp/version.h << 'EOF' #define MPP_GIT_VERSION "unknown" #define MPP_GIT_BRANCH "master" #define MPP_BUILD_TIME "unknown" - #define MPP_VER_HIST_CNT 10 #define MPP_VER_HIST_0 "unknown" #define MPP_VER_HIST_1 "unknown" @@ -113,6 +117,12 @@ cat > mpp/version.h << 'EOF' #endif EOF +# version.h 用于直接编译 +cp build/cmake/version.in mpp/version.h + +# 给 merge_static_lib.sh 添加执行权限 +chmod +x merge_static_lib.sh 2>/dev/null || true + # 编译安装 mkdir -p build cd build @@ -133,29 +143,58 @@ echo -e "${GREEN}✓${NC} MPP 安装完成" # ============================================ echo -e "${YELLOW}[3/4] 安装 RKNN Runtime...${NC}" -# 优先使用下载的 rknpu2-1.5.2.zip -if [ -f "/tmp/rknpu2-1.5.2.zip" ]; then - echo " 使用下载的 rknpu2-1.5.2.zip" - cd /tmp - unzip -q -o rknpu2-1.5.2.zip 2>/dev/null || unzip -q -o rknpu2-1.6.0_arm64.deb.zip 2>/dev/null || true - - # 查找解压后的目录 - RKNPU_DIR=$(find /tmp -maxdepth 1 -type d -name "rknpu*" | head -1) - if [ -n "$RKNPU_DIR" ] && [ -d "$RKNPU_DIR/runtime/RK3588/Linux/aarch64" ]; then - echo " 安装 RKNN 库..." - cp "$RKNPU_DIR/runtime/RK3588/Linux/aarch64/"*.so /usr/lib/ 2>/dev/null || true - cp -r "$RKNPU_DIR/runtime/RK3588/Linux/librknn_api/include/"* /usr/include/ 2>/dev/null || true +RKNN_INSTALLED=false + +# 优先使用本地上传的 rknpu2 zip(覆盖系统版本) +for zip_file in "/tmp/rknpu2-1.5.2.zip" "/tmp/rknpu2-1.6.0.zip" "/tmp/rknpu2_1.6.0_arm64.zip"; do + if [ -f "$zip_file" ]; then + echo " 发现本地文件: $(basename $zip_file),优先使用" + cd /tmp + rm -rf rknpu2-* 2>/dev/null || true + unzip -q -o "$zip_file" 2>/dev/null || true + + # 查找解压后的目录 + RKNPU_DIR=$(find /tmp -maxdepth 1 -type d -name "rknpu*" | head -1) + if [ -n "$RKNPU_DIR" ]; then + echo " 解压目录: $RKNPU_DIR" + if [ -d "$RKNPU_DIR/runtime/RK3588/Linux/aarch64" ]; then + echo " 安装 RKNN 库..." + cp "$RKNPU_DIR/runtime/RK3588/Linux/aarch64/"*.so /usr/lib/ 2>/dev/null || true + fi + if [ -d "$RKNPU_DIR/runtime/RK3588/Linux/librknn_api/include" ]; then + cp -r "$RKNPU_DIR/runtime/RK3588/Linux/librknn_api/include/"* /usr/include/ 2>/dev/null || true + fi + RKNN_INSTALLED=true + fi + break fi -else - # 使用项目自带的(仅头文件,库需要系统安装) - echo " 使用项目自带的 RKNPU2 头文件..." - if [ -d "$PROJECT_DIR/third_party/rknpu2/runtime/RK3588/Linux/librknn_api/include" ]; then - cp -r "$PROJECT_DIR/third_party/rknpu2/runtime/RK3588/Linux/librknn_api/include/"* /usr/include/ 2>/dev/null || true +done + +# 如果没有本地 zip,检查系统是否已有 +if [ "$RKNN_INSTALLED" != "true" ]; then + if [ -f "/usr/lib/librknnrt.so" ] || [ -f "/usr/lib/aarch64-linux-gnu/librknnrt.so" ]; then + echo " 系统已存在 RKNN 库" + RKNN_INSTALLED=true fi - - echo -e "${YELLOW}警告: 未找到预编译库,尝试安装系统版本...${NC}" - # 尝试安装系统版本作为后备 - apt-get install -y librknn-runtime librknn-dev 2>/dev/null || true +fi + +# 安装头文件(项目自带) +if [ -d "$PROJECT_DIR/third_party/rknpu2/runtime/RK3588/Linux/librknn_api/include" ]; then + echo " 安装 RKNN 头文件..." + cp -r "$PROJECT_DIR/third_party/rknpu2/runtime/RK3588/Linux/librknn_api/include/"* /usr/include/ 2>/dev/null || true +fi + +# 如果库还没安装,尝试系统仓库 +if [ "$RKNN_INSTALLED" != "true" ]; then + echo " 尝试从系统仓库安装..." + apt-get install -y librknn-runtime librknn-api 2>/dev/null && { + RKNN_INSTALLED=true + } || { + echo -e "${YELLOW}警告: 无法安装 RKNN 运行时库${NC}" + echo " 请手动下载并安装:" + echo " https://github.com/rockchip-linux/rknpu2/releases" + echo " 或将 rknpu2-1.5.2.zip 上传到 /tmp/ 后重试" + } fi ldconfig diff --git a/third_party/mpp/merge_static_lib.sh b/third_party/mpp/merge_static_lib.sh old mode 100644 new mode 100755