使用场景:手动编译指定的动态库,同时拷贝到目标板上。
#!/bin/bash
moduleList="cJson Json Archive Http Encrypt Sqllite Tinyxml Event Config Media Command MagixBox DeviceAux Muxer Stream NetApp GB28181 RTSP Onvif Web"
SO_FILE=
IP=${IP:-"192.168.74.79"} #若IP未定义且为空的,返回一个默认值
if [ $# -eq 0 ]; then
for modul in ${moduleList} #编译所有模块
do
cd ${modul}
cmake -DPLATFORM=dv300 -DDEBUG=yes -Dmajor=0 -Dminor=01 -Dpatch=001;make clean;make -j32
rm -rf CMakeCache.txt CMakeFiles/ cmake_install.cmake Makefile
cd ..
done
elif [ $# -eq 1 ]; then
module=$1
module=${module%/} #去掉按Tab自动完成时带的/,这里不能直接用$1,用了一个临时变量module进行操作
echo "cd $module and make"
cd ${module}
cmake -DPLATFORM=dv300 -DDEBUG=yes -Dmajor=0 -Dminor=01 -Dpatch=001;make clean;make -j32
if [ $? -ne 0 ]; then
echo -e "\033[31m"
echo -e "compile fail"
echo -e "\033[0m"
exit 1
fi
rm -rf CMakeCache.txt CMakeFiles/ cmake_install.cmake Makefile
cd ..
#根据模块名查找库文件
LIB_SO=lib*${module}*.so
SO_FILE=`find ./Build/dv300/ -iname ${LIB_SO}`
#如果找到匹配则SO_FILE不为空,为空退出
if [ -z ${SO_FILE} ]; then
echo -e "\033[31m find ${LIB_SO} fail\033[0m"
exit
fi
#输入目标ip地址,进行拷贝
read -p "ip 地址: " IP
echo "scp ${SO_FILE} to remote ${IP}"
# password为登录用户root的密码
sshpass -p "password" scp ${SO_FILE} root@${IP}:/usr/lib/
else
echo "only support 1 param!"
fi
可以添加ssh登录重启操作,请看上一篇文章。