栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell 实用例一,编译模块及拷贝

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell 实用例一,编译模块及拷贝

使用场景:手动编译指定的动态库,同时拷贝到目标板上。

#!/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 "33[31m"
		echo -e "compile fail"
		echo -e "33[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 "33[31m find ${LIB_SO} fail33[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登录重启操作,请看上一篇文章。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号