是否可以采用静态对象并以不会破坏函数调用的方式重命名符号?
例如,如果我们有一个包含两个函数的静态对象:
void A()
{
//Do stuff
}
和
void B()
{
A();
}
假设这些是外部声明的C函数,那么.so将包含两个符号 - A和B.有没有办法重命名A - > funcA和B - > funcB?
(与函数调用有关的问题的第二部分是基于我对链接的天真,如果你只是更改名称,函数会调用是否会中断?)
P.S。平台是linux,可能是用gcc编译的,但是如果有交叉编译方式那么我会很高兴的!
答案 0 :(得分:6)
请参阅objcopy实用程序的手册页,特别是--redefine-syms选项。