链接后更改符号名称

时间:2011-08-25 19:41:35

标签: c symbols

是否可以采用静态对象并以不会破坏函数调用的方式重命名符号?

例如,如果我们有一个包含两个函数的静态对象:

void A()
{
  //Do stuff
}

void B()
{
  A();
}

假设这些是外部声明的C函数,那么.so将包含两个符号 - A和B.有没有办法重命名A - > funcA和B - > funcB?

(与函数调用有关的问题的第二部分是基于我对链接的天真,如果你只是更改名称,函数会调用是否会中断?)

P.S。平台是linux,可能是用gcc编译的,但是如果有交叉编译方式那么我会很高兴的!

1 个答案:

答案 0 :(得分:6)

请参阅objcopy实用程序的手册页,特别是--redefine-syms选项。