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

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对目录下所有库文件进行rpath更改操作的SHELL脚本相关的知识,希望对你有一定的参考价值。

LINUX和MAC差异是命令不同。

function quantum6_change_rpath_command_3param()

   # echo $1 $2 $3
   # linux chrpath 
   install_name_tool -change \\
       $2 \\
       $3 \\
       $1


function quantum6_change_rpath_file2_3param()

   mac_change_rpath_command \\
       $1 \\
       $2 \\
       $3/$2


function quantum6_change_rpath_file_3param()

    local SRC_TEXTS=`otool -L $1`
    if [ "$SRC_TEXTS" == "" ]; then
        return
    fi

    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

        quantum6_change_rpath_command_3param \\
           $1 \\
           $item \\
           $3/$LIB_NAME
           
    done



function quantum6_change_rpath_dir_3param()

    local CURR_DIR=`pwd`
    cd "$1"
    # pwd

    local files=`ls | tr " " "\\?"`
    for item in $files
    do
       if [ -d "$item" ]; then
           quantum6_change_rpath_dir_3param  "$item" $2 $3
       elif [ -f "$item" ]; then
           quantum6_change_rpath_file_3param "$item" $2 $3
       fi
    done

    cd $CURR_DIR


RPATH_SRC="/Users/taishansoft/lib-ffmpeg"
DEST_DIR=/Users/taishansoft/eclipse-workspace/FontTest/lib-ffmpeg
RPATH_DEST="./lib-ffmpeg"

mquantum6_change_rpath_dir_3param $DEST_DIR   $RPATH_SRC    $RPATH_DEST

以上是关于对目录下所有库文件进行rpath更改操作的SHELL脚本的主要内容,如果未能解决你的问题,请参考以下文章

python文件和目录操作方法大全(含更改文件夹下所有文件名称的实例)

用户权限管理

Linux批量更改文件后缀名

linux下ld连接SO文件时如何制定绝对路径

这是一个定时脚本,主要功能是遍历该文件夹下的所有文件并存储到数组,对数据中的文件进行操作,一个一个移动到指定的目录下,并删除原有文件

Sourcetree忽略文件