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

102 篇文章 1 订阅

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}"

# }}}}}}}}}}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳鲲鹏

能给阁下一点帮助,非常荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值