是否可以使用链接描述文件或mapfile重命名符号? 我正在尝试调整一些用C ++和Fortran混合编写的代码,以便它可以在Linux上使用多个Fortran编译器。它目前是为Solaris Studio编译器编写的,并启用了区分大小写的选项。我想自动处理Fortran符号名称修改的变体(例如来自Makefile)。
似乎可以创建别名,这是一个包含以下内容的链接描述文件:
C_Function_ = c_function;
会有点工作。不幸的是,添加-T选项来引用此脚本会导致其他一些行为更改,并且由于找不到libdl.so.2 / librt.so.1而导致错误。是否存在某种我需要包含的默认链接描述文件?我在Linux上试过使用bfd和gold连接器。
答案 0 :(得分:4)
您无法真正重命名符号,但可以为现有符号定义别名,例如
PROVIDE(c_function = C_function_);
...
在链接描述文件中。
如果将带有-T
选项的链接描述文件传递给ld
,它将替换原始(默认)链接描述文件。如果您希望链接器脚本 extend 是默认值,请在不使用-T
选项的情况下传递它(就像使用其他对象文件一样)。
这样,一切都应该按预期工作。