如何让 gcc 为所有符号名称添加前缀

How can I get gcc to add a prefix to all symbol names

本文关键字:符号 添加 加前缀 gcc      更新时间:2023-10-16

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

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

简而言之,您可以使用如下objcopy在现有库中"前缀"符号:

objcopy --prefix-symbols=foo_ foo.o

*编辑:乔治·斯科普佐夫的解决方案比我的:)更好不过,nm技巧可能会派上用场。


这不是您要找的,但我过去不得不做类似的事情(重命名库导出的符号)

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

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