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}
}
相关推荐
zl_dfq21 小时前
Linux 之 【进程间通信】(消息队列与信号量、Systrm VIPC在内核中数据结构设计)
linux
信创天地1 天前
国产化数据库深度运维:性能调优与故障排查实战指南
运维·数据库·安全·elk·自动化·rabbitmq
木卫二号Coding1 天前
Docker-构建自己的Web-Linux系统-镜像colinchang/ubuntu-desktop:22.04
linux·ubuntu·docker
维度攻城狮1 天前
Ubuntu突然无法中文输入的问题解决办法
linux·运维·ubuntu
Coder个人博客1 天前
Linux6.19-ARM64 mm Makefile子模块深入分析
linux·安全·车载系统·系统架构·系统安全·鸿蒙系统·安全架构
曾几何时`1 天前
二分查找(十)1146. 快照数组 pair整理
java·服务器·前端
猫猫的小茶馆1 天前
【Linux 驱动开发】五. 设备树
linux·arm开发·驱动开发·stm32·嵌入式硬件·mcu·硬件工程
岱宗夫up1 天前
基于ROS的视觉导航系统实战:黑线循迹+激光笔跟随双模态实现(冰达机器人Nano改造)
linux·python·机器人·ros
eWidget1 天前
Shell输入输出(一):echo/printf输出,格式控制与颜色设置
运维·数据库·运维开发
b***25111 天前
动力电池点焊工艺解析
运维·自动化