12

我知道过去有一个选项-fprefix-function-name可以为所有生成的符号添加前缀,它似乎不再是 gcc 的一部分。有没有其他方法可以做到这一点?

4

2 回答 2

16

我相信这个答案会给你解决方案。

简而言之,您可以使用objcopy如下方式在现有库中“添加前缀”符号:

objcopy --prefix-symbols=foo_ foo.o

于 2012-04-14T22:40:14.183 回答
3

*编辑:George Skoptsov 的解决方案比我的要好 :)nm不过这个技巧可能会派上用场。


这不完全是您正在寻找的东西,但我过去不得不做类似的事情(重命名库导出的符号)

如果您知道要重新定义的符号名称,可以尝试使用objcopy --redefine-syms old=new. 有关输入的更多详细信息,请参阅 objcopy 的手册页(objcopy 可能会覆盖您的文件,所以要小心)

如果您不知道符号的名称,您可以尝试使用nm来获取符号列表。同样,由于我不确定您要查找哪种符号,因此手册页可能是您最好的选择。

于 2012-04-14T22:46:04.937 回答