对目录下所有库文件进行rpath更改操作的SHELL脚本

简介: 对目录下所有库文件进行rpath更改操作的SHELL脚本

LINUX和MAC差异是命令不同。

#!/bin/bash
# sudo apt -y install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev
function mac_change_rpath_command_3param()
{
   # linux: local RPATH_TOOL=chrpath 
   local RPATH_TOOL=install_name_tool
   local RPATH_CMD=/usr/bin/${RPATH_TOOL}
   if [ ! -f ${RPATH_CMD}  ]; then
       RPATH_CMD=./${RPATH_TOOL}
   fi
   ${RPATH_CMD} -change \
       "${2}" \
       "${3}" \
       "${1}"
}
function mac_change_rpath_file_3param()
{
    local SRC_TEXTS=`otool -L "${1}"`
    if [ "${SRC_TEXTS}" == "" ]; then
        return
    fi
    local item
    for item in ${SRC_TEXTS}
    do
        local LIB_NAME
        if [[ ${item} == *${2}* ]]; then
            LIB_NAME=`echo ${item} | awk -F '/' '{ print $6 }'`
        elif [[ ${item} == /lib*dylib ]]; then
            LIB_NAME=`echo ${item} | awk -F '/' '{ print $2 }'`
        elif [[ ${item} == lib*dylib ]]; then
            LIB_NAME=${item}
        else
            continue
        fi
        # echo ${item} ${LIB_NAME}
       mac_change_rpath_command_3param \
           "${1}" \
           "${item}" \
           "${3}"/${LIB_NAME}
    done
}
function mac_change_rpath_dir_3param()
{
    local CURR_DIR=`pwd`
    cd "${1}"
    # pwd
    local files=`ls | tr " " "\?"`
    local item
    for item in ${files}
    do
       if [ -d ${item} ]; then
           mac_change_rpath_dir_3param       "${item}" "${2}" "${3}"
       elif [ -f ${item} ]; then
           mac_change_rpath_file_3param "${1}/${item}" "${2}" "${3}"
       fi
    done
    cd "${CURR_DIR}"
}
# {{{{{{{{{{
INSTALL_LIB_DIR=`pwd`
INSTALL_LIB_DIR="${INSTALL_LIB_DIR}/ffmpeg"
RPATH_SRC="/Users/tsit/lib-ffmpeg/lib"
RPATH_DEST="${INSTALL_LIB_DIR}"
mac_change_rpath_dir_3param "${INSTALL_LIB_DIR}"   "${RPATH_SRC}"    "${RPATH_DEST}"
# }}}}}}}}}}
目录
相关文章
|
23天前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
106 1
|
26天前
|
Java Shell
SpringBoot启动脚本Shell
SpringBoot启动脚本Shell
17 0
|
1月前
|
Shell Linux API
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
33 1
|
1月前
|
存储 算法 Shell
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
32 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】⭐⭐ Linux 显示当前shell会话中的目录栈 dirs命令使用教程
【Shell 命令集合 磁盘管理 】⭐⭐ Linux 显示当前shell会话中的目录栈 dirs命令使用教程
27 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 从远程磁带设备中删除文件或目录rmt命令使用教程
【Shell 命令集合 磁盘管理 】Linux 从远程磁带设备中删除文件或目录rmt命令使用教程
27 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 以树状图列出目录的内容 tree命令使用指南
【Shell 命令集合 磁盘管理 】Linux 以树状图列出目录的内容 tree命令使用指南
37 0
|
3天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
28 3
|
6天前
|
运维 监控 Shell
利用Shell脚本编写局域网监控软件:实时监测主机连接情况
本文介绍了如何使用Shell脚本创建一个局域网监控工具,以实时检查主机连接状态。脚本包括扫描IP地址范围检测主机可达性及使用`netstat`监控ESTABLISHED连接。此外,还展示了如何每60秒将连接数数据自动提交到指定网站API,以便实时跟踪网络活动。这个自动化监控系统有助于提升网络安全性和故障排查效率。
28 0
|
7天前
|
Shell
Shell脚本之流程控制语句
Shell脚本之流程控制语句