rk3568build-linux.sh解析
build-linux.sh解析
- 前言
- 解析
前言
正点原子rk3568学习笔记,rk官方RKNN_MODEL_ZOO文件中的build-linux.sh脚本解析
执行命令:./build-linux.sh -t rk3568 -a aarch64 -d mobilenet
解析
#!/bin/bash
指定脚本的解释器为/bin/bash,即使用Bash shell来执行此脚本。
set -e
如果脚本中的任何命令执行失败(返回非零退出状态),则立即退出脚本执行。这有助于捕获错误。
echo “$0 $@”
$ 0是脚本的名称,$ @是所有传递给脚本的参数。这行命令会打印出脚本名称及其接收到的所有参数。
while getopts ":t:a:d:b:m:r:j" opt; docase $opt int)TARGET_SOC=$OPTARG;;a)TARGET_ARCH=$OPTARG;;b)BUILD_TYPE=$OPTARG;;m)ENABLE_ASAN=ONexport ENABLE_ASAN=TRUE;;d)BUILD_DEMO_NAME=$OPTARG;;r)DISABLE_RGA=ON;;j)DISABLE_LIBJPEG=ON;;:)echo "Option -$OPTARG requires an argument." exit 1;;?)echo "Invalid option: -$OPTARG index:$OPTIND";;esac
done
使用getopts命令解析命令行选项,类似与for和switch case。脚本支持的选项包括-t(目标SOC),-a(目标架构),-d(构建演示名称),-b(构建类型),-m(启用ASAN),-r(禁用RGA),-j(禁用libjpeg)。根据选项的不同,设置相应的变量。
TARGET_SOC = rk3568
TARGET_ARCH = aarch64
BUILD_DEMO_NAME = mobilenet
if [ -z ${TARGET_SOC} ] || [ -z ${BUILD_DEMO_NAME} ]; thenecho "$0 -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m] [-r] [-j]"echo ""echo " -t : target (rk356x/rk3588/rk3576/rv1106/rk1808/rv1126)"echo " -a : arch (aarch64/armhf)"echo " -d : demo name"echo " -b : build_type(Debug/Release)"echo " -m : enable address sanitizer, build_type need set to Debug"echo " -r : disable rga, use cpu resize image"echo " -j : disable libjpeg to avoid conflicts between libjpeg and opencv"echo "such as: $0 -t rk3588 -a aarch64 -d mobilenet"echo "Note: 'rk356x' represents rk3562/rk3566/rk3568, 'rv1106' represents rv1103/rv1106, 'rv1126' represents rv1109/rv1126"echo "Note: 'disable rga option is invalid for rv1103/rv1103b/rv1106"echo "Note: 'if you want to use opencv to read or save jpg files, use the '-j' option to disa