LINUX SHELL综合案例:指定字串的截取,字串长度,rpath修改

这个脚本的思路是这样的

  • 新的rpath长度不通超过文件已有的rpath
  • 不同库的关键字,可能是RUNPATH,也可能是RPATH
  • 从文件中读取rpath
  • 截取rpath
  • 计算长度
  • 根据长度,使用不同长度的rpath

具体结果

复制代码
function change_rpath()
{
    RPATH01=.
    RPATH07=\$ORIGIN
    RPATH12=\$ORIGIN:/lib
    RPATH30=\$ORIGIN:/lib/aarch64-linux-gnu
    RPATH35=\$ORIGIN:/lib:/lib/aarch64-linux-gnu

    RPATH_INFO=`chrpath ${1}`
#libHpws.Generic.so: RPATH=:/libs
echo ${RPATH_INFO}
    RPATH=`echo ${RPATH_INFO#*RPATH=}`
    if [[ ${RPATH_INFO} == ${RPATH} ]]; then
        RPATH=`echo ${RPATH_INFO#*RUNPATH=}`
    fi

#:/libs
echo ${RPATH}

    length=${#RPATH}
#6
echo ${length}

    if [[ ${length} -ge 35 ]]; then
        RPATH=${RPATH35}
    elif [[ ${length} -ge 30 ]]; then
        RPATH=${RPATH30}
    elif [[ ${length} -ge 12 ]]; then
        RPATH=${RPATH12}
    elif [[ ${length} -ge  7 ]]; then
        RPATH=${RPATH07}
    else
        RPATH=${RPATH01}
    fi
    result=`chrpath -r ${RPATH} ${1}`

    # chrpath ${1}
}
相关推荐
YueiL13 分钟前
在 Ubuntu 虚拟机中实现 HTML 表单与 C 语言 HTTP 服务器交互
服务器·ubuntu
qq_278984131 小时前
【无标题】
linux·运维
爱跨境的笑笑2 小时前
IP大科普:住宅IP、机房IP、原生IP、双ISP
服务器·tcp/ip·接口隔离原则
s_little_monster5 小时前
【Linux】网络--传输层--UDP协议
linux·运维·服务器·笔记·学习·udp·学习方法
charlie1145141917 小时前
Linux内核深入学习(4)——内核常见的数据结构之链表
linux·数据结构·学习·链表·内核
pp-周子晗(努力赶上课程进度版)7 小时前
【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现
服务器·网络·设计模式
九月镇灵将8 小时前
Ubuntu服务器部署多语言项目(Node.js/Python)方式实践
服务器·ubuntu·node.js·screen·supervisor
L汐8 小时前
05 部署Nginx反向代理
运维·nginx·github
南方以南_8 小时前
CentOS相关操作hub(更新中)
linux·运维·centos
明天不下雨(牛客同名)9 小时前
介绍一下 MVCC
java·服务器·数据库