使用链接描述文件重命名符号

时间:2017-01-30 10:49:13

标签: linker ld linker-scripts

是否可以使用链接描述文件或mapfile重命名符号? 我正在尝试调整一些用C ++和Fortran混合编写的代码,以便它可以在Linux上使用多个Fortran编译器。它目前是为Solaris Studio编译器编写的,并启用了区分大小写的选项。我想自动处理Fortran符号名称修改的变体(例如来自Makefile)。

似乎可以创建别名,这是一个包含以下内容的链接描述文件:

C_Function_ = c_function;

会有点工作。不幸的是,添加-T选项来引用此脚本会导致其他一些行为更改,并且由于找不到libdl.so.2 / librt.so.1而导致错误。是否存在某种我需要包含的默认链接描述文件?我在Linux上试过使用bfd和gold连接器。

1 个答案:

答案 0 :(得分:4)

您无法真正重命名符号,但可以为现有符号定义别名,例如

PROVIDE(c_function = C_function_);
...

在链接描述文件中。

如果将带有-T选项的链接描述文件传递给ld,它将替换原始(默认)链接描述文件。如果您希望链接器脚本 extend 是默认值,请在不使用-T选项的情况下传递它(就像使用其他对象文件一样)。

这样,一切都应该按预期工作。