全局更改符号名称的编译器选项?

时间:2014-11-27 00:00:33

标签: ios objective-c c clang

向朋友索要。

假设在我的iOS项目中,我获得了第三方静态库(.a),我没有源代码访问权限,并且静态链接到开源项目。我也使用这个开源项目静态库,但是使用的是更新的版本。由于它的iOS需要全部静态链接。为了避免重复的符号,在编译过程中我可以给Clang编译器(或者我个人也对GCC感兴趣)提供一个选项来全面破坏这个新版本的开源库(也许我想把它编译成一个静态库首先)我要链接到哪个?

换句话说,要链接到" .a",是否有一种方法可以在编译期间对符号进行命名,例如在前缀前加上符号,这样就不会发生符号冲突?如果编译器无法做到这一点,是否有一种工具可以在全球范围内对其进行修改?

或者,感谢任何其他避免重复符号的解决方案。

1 个答案:

答案 0 :(得分:0)

两个想法:

1)在您编译的库中添加前缀要容易得多。这可能不太令人满意,但这是一个简单的解决方案。

2)我发现这个谷歌搜索:

http://web.mit.edu/~jfc/src/sym-rename.c

看起来它会为ELF符号表中的所有内容添加前缀。大概你用ar来爆炸你的档案,在它上面运行它,然后再重新组合它。