修改安装脚本

This commit is contained in:
haotian 2026-02-26 23:13:23 +08:00
parent c26909a241
commit 83c99834c7
2 changed files with 65 additions and 26 deletions

View File

@ -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"
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
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
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" ] && [ -d "$RKNPU_DIR/runtime/RK3588/Linux/aarch64" ]; then
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
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
RKNN_INSTALLED=true
fi
break
fi
done
echo -e "${YELLOW}警告: 未找到预编译库,尝试安装系统版本...${NC}"
# 尝试安装系统版本作为后备
apt-get install -y librknn-runtime librknn-dev 2>/dev/null || true
# 如果没有本地 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
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

0
third_party/mpp/merge_static_lib.sh vendored Normal file → Executable file
View File