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

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

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

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

objcopy –prefix-symbols = foo_ foo.o

*编辑: George Skoptsov的解决方案比我的更好:)虽然nm技巧可能派上用场。


这不是你想要的,但我过去必须做类似的事情(重命名库导出的符号)

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

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