我的项目依赖于一个第三方库,该库导出了更多应有的符号。其中一些符号被其他库和主程序无意地覆盖。
如何更改已编译共享对象的函数和变量的可见性?
如何更改已编译共享对象的函数和变量的可见性?
您可以通过修改动态符号部分来更改符号的可见性(.dynsym
) -- 它包含一个平面数组Elf32_Sym
s or Elf64_Sym
s,你可以覆盖.st_info
and .st_other
其中的字段(参见这个答案 https://stackoverflow.com/a/36274814/50617).
我不知道有任何工具可以使这变得简单,您可能需要编写一个自定义程序来执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)