在编译时重命名符号,无需以跨平台方式更改代码
在创建静态对象时,是否可以在编译时以跨平台方式重命名符号(无需更改代码)?我最近推荐了 objcopy,但 linux 不是唯一的目标平台,它也必须在 mac 上运行。我正在使用 gcc 进行编译,所以我希望有某种 gcc 选项。
我听说过 .def 文件,但这可能具有误导性,因为我发现的有关它们的信息似乎适用于 Windows。
编辑: 我正在尝试更改 C 和 Fortran 函数的名称,特别是在它们前面加上“wrap”一词,以避免链接时的符号冲突。
In creating a static object is it possible to rename the symbols at compile time (without changing the code) in a cross platform way? I have recently had objcopy recommended, but linux is not the only target platform it must also work on a mac. I am compiling using gcc, so I was hoping that there was a gcc option of some sort.
I have heard about .def files, but this may have been misleading as the information about them that I have found seems to be for windows.
Edit:
I'm trying to change the name of C and Fortran functions, specifically pre-pending them with the word "wrap" in order to avoid symbol conflicts at link time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您也许可以使用预处理器来实现它:
You might be able to achieve it with preprocessor:
您可以使用 gcc alias 属性来创建多个指向相同的功能。
我不确定别名属性是否适用于其他类型的符号(例如变量)。
You can use the gcc alias attribute to make multiple symbols that point to the same function.
I'm not sure if the alias attribute works for other types of symbols (e.g. variables).