修改大型二进制库函数名的bash 脚本及其解释

迭代的方式对于大型二进制库改名字的功能脚本

会将源文件中的函数  add_(...) 修改成 nubia_add_(...) 的方式来调用

此脚本分配来修改,可以避免突破资源限制  ulimit -a;

#!/bin/bash


apitxt="./funclist.txt"
prefix_name="nubia_"

api_symbols=(  )

#1. 将 库文件的符号导出到本地文本文件
rm -rf ${apitxt}
nm $1 > ${apitxt}

#文本文件总行数
N=$(sed -n '$=' $apitxt)

#sed -n "300, 400" filename 注意p;读出文件的 第300行到第400行


for ((i=1; i<=$N; i+=1000))
do
j=$[i + 999]

#debug
#seg=($(sed -n "${i}, ${j}p" ${apitxt}))
#echo -e ${seg[@]}
#echo $i $j
#取出i行到j行,只保留T类型后面的文本,即库中源代码实现的函数名字,保存进internal_symbols中
internal_symbols=($(
    sed -n "${i}, ${j}p" $apitxt | sed '/^[0-9]\+ T /!d; s///' |
    sort | comm -13 <(printf "%s\n" "${api_symbols[@]}" | sort) -
))

#将 internal_symbols中的变量名字进一步修改成  --redefine-sym 原函数名=修改后的函数名 的方式,待后面丢给 objcopy 来调用
objcopy_args=($(
    printf "%s\n" "${internal_symbols[@]}" |
    while IFS= read -r sym; do
        new="${prefix_name}${sym}"
        # replace the symbol with a prefix
        echo --redefine-sym "$sym=$new"
        # make the symbol local, future
#        echo -L "$new"
    done
))
#执行更换名字动作
objcopy "${objcopy_args[@]}" $1
done

相关推荐

  1. 修改大型二进制函数bash 脚本及其解释

    2024-01-17 11:30:09       49 阅读
  2. Linux动态*.so函数修改

    2024-01-17 11:30:09       43 阅读
  3. Linuxbash脚本

    2024-01-17 11:30:09       82 阅读
  4. 解释C语言中函数及其参数传递方式

    2024-01-17 11:30:09       42 阅读
  5. 解释Python中lambda函数及其用途

    2024-01-17 11:30:09       36 阅读
  6. 如何优化 Bash 脚本执行效率?

    2024-01-17 11:30:09       31 阅读
  7. 解决 sh 和 bash 在执行脚本差异:双括号问题

    2024-01-17 11:30:09       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-17 11:30:09       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-17 11:30:09       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-17 11:30:09       82 阅读
  4. Python语言-面向对象

    2024-01-17 11:30:09       91 阅读

热门阅读

  1. Docker

    2024-01-17 11:30:09       58 阅读
  2. STM32 基础知识(探索者开发板)--159讲 CAN总线

    2024-01-17 11:30:09       49 阅读
  3. 设计模式-抽象工厂模式

    2024-01-17 11:30:09       49 阅读
  4. 我的创作纪念日(730天)

    2024-01-17 11:30:09       53 阅读
  5. Scipy 高级教程——稀疏矩阵

    2024-01-17 11:30:09       49 阅读
  6. 音视频-SDL的简单使用

    2024-01-17 11:30:09       53 阅读
  7. php中项目目录下.htaccess文件讲解

    2024-01-17 11:30:09       48 阅读