Linux - 使用objcopy命令修改符号的作用域避免同名符号冲突
2023-09-11 14:22:09 时间
$ objcopy --localize-symbol=SYMBOL_NAME input.o output.o
$ objcopy --globalize-symbol=SYMBOL_NAME input.o output.o
可以加等号,也可以不加等号:
objcopy --localize-symbol SYMBOL_NAME input.o output.o
objcopy --globalize-symbol SYMBOL_NAME input.o output.o
SYMBOL_NAME是符号名字,比如某个函数名称 myfunc。
input.o是编译出来的obj文件,output.o是新生成的obj文件。
使用--localize-symbol选项,将一个符号从全局作用域改成局部作用域。
使用--globalize-symbol选项,将一个符号从局部作用域改成全局作用域。
使用nm命令查看obj文件的符号,符号类型字符,大写T表示全局作用域,小写t表示局部作用域。
之所以要使用这个功能,是因为有个程序构建时要链接两个库,里面有重复而冲突的符号,我只好把其中一个库里的obj文件修改符号表的作用域,从全局变成本地,链接时就不会发生冲突了。
参考:
Change local symbol to global in ELF – Hev's Blog
相关文章
- 【Linux】linux常用基本命令
- Linux安装 微信开发者工具(deepin linux ubt)
- linux ethtool 命令详解
- Linux中使用sed命令或awk命令修改常规配置文件
- linux 修改文件内容命令
- 理解进程调度时机跟踪分析进程调度与进程切换的过程(Linux)
- 用linux mail命令发送邮件[Linux]
- 5 个获取 Linux 主机信息的命令
- 如何使用 pv 命令监控 linux 命令的执行进度
- 如何让 Linux 机器加入 Windows 的 AD 域
- 一篇文章教会你Linux下《常用操作指令》
- Linux命令之install
- Linux命令之grep
- Linux命令之sudo
- linux 老式 PCI 探测
- Linux—export命令查看、修改用户环境变量
- Linux常用基本命令:三剑客命令之-awk数组用法
- Linux常用基本命令(rename,basename,dirname)
- Linux常用基本命令( mkdir )
- linux卸载自带jdk
- Linux基础:系统启动过程(5个阶段)、linux关机正确流程及常用实例命令、linux目录结构(常见目录解释及目录的分类介绍)
- Linux常用文件管理命令(下)
- Linux下使用ps命令查看某个进程文件的启动位置
- Linux下常用的shell命令记录
- 【Linux】:文件权限
- Linux学习笔记(9)linux网络管理与配置之一——Linux基础网络命令与学习大纲(0)
- 每天一个linux命令(26):du 命令
- mac系统中使用命令展示目录树结构,实现Linux中 tree 命令的效果
- Linux - Buildroot简介和生成工具链SDK