shared-libraries - 重新定义共享库中的符号
问题描述
我需要从共享库(.so)文件中更改某些符号,如下例所示:我需要将abc
.so 文件中的符号重命名为符号xyz
。我有一个工具可以在头文件中替换它,这只是我在 .so 共享库中更改所面临的挑战。对于共享库,是否有任何工具或命令可以帮助我反汇编 .so 文件、更新符号并重新组装为 .so 文件?对于共享库,我们需要一种重建符号表的机制。如果有任何工具可以完成我的任务,需要帮助吗?
仅供参考:更改源是最好的方法,但对于短期的解决方案,它可以帮助在符号级别替换代码字。
解决方案
您可以使用 GNU binutils 中的 objcopy 来执行此操作。
objcopy --redefine-sym abc=xyz <input_so_file> [output_so]
objcopy --redefine-syms <Filename> [output_so]
推荐阅读
- python - Pandas / Groupby / 应用优化
- regex - 将复杂字符串通过正则表达式匹配并强制重复次数
- python - Pandas:将具有多行的 JSON 列转换为多个数据框行
- tls1.2 - 如何测试用户的浏览器是否支持某些密码并在不支持时显示友好消息
- karate - 如何在空手道中对两个数组进行一对一映射
- php - Is it possible to update the PHP version of my web template to be up to date with my hosting service?
- apache-flink - flink doesn't output anything
- node.js - Typescript + Mocha/Chai - For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves
- r - Knit Button Results Blank in R markdown
- vim - vim: is there a way to preprocess a file opened by copen