使用链接描述文件重命名符号
rename a symbol using a linker script
是否可以使用链接描述文件或映射文件来重命名符号?
我正在尝试调整一些用 C++ 和 Fortran 混合编写的代码,以便它可以与多个 Fortran 编译器一起工作 - Linux。它目前是为启用区分大小写选项的 Solaris Studio 编译器编写的。我想自动处理 Fortran 符号名称的变化(例如来自 Makefile)。
似乎确实可以创建别名,因此,链接描述文件包含:
C_Function_ = c_function;
会有点工作。不幸的是,添加 -T 选项来引用此脚本会导致行为发生一些其他变化,并且由于未找到 libdl.so.2/librt.so.1 而出现错误。我需要包含某种默认链接描述文件吗?我在 Linux.
上尝试了 bfd 和 gold 链接器
您不能真正重命名符号,但您可以为现有符号定义别名,例如
PROVIDE(c_function = C_function_);
...
在链接描述文件中。
如果您将带有 -T
选项的链接描述文件传递给 ld
,它将 替换 原始(默认)链接描述文件。如果您希望链接器脚本 扩展 默认值,请在不使用 -T
选项的情况下传递它(就像您使用附加目标文件一样)。
这样,一切都应该按预期进行。
是否可以使用链接描述文件或映射文件来重命名符号? 我正在尝试调整一些用 C++ 和 Fortran 混合编写的代码,以便它可以与多个 Fortran 编译器一起工作 - Linux。它目前是为启用区分大小写选项的 Solaris Studio 编译器编写的。我想自动处理 Fortran 符号名称的变化(例如来自 Makefile)。
似乎确实可以创建别名,因此,链接描述文件包含:
C_Function_ = c_function;
会有点工作。不幸的是,添加 -T 选项来引用此脚本会导致行为发生一些其他变化,并且由于未找到 libdl.so.2/librt.so.1 而出现错误。我需要包含某种默认链接描述文件吗?我在 Linux.
上尝试了 bfd 和 gold 链接器您不能真正重命名符号,但您可以为现有符号定义别名,例如
PROVIDE(c_function = C_function_);
...
在链接描述文件中。
如果您将带有 -T
选项的链接描述文件传递给 ld
,它将 替换 原始(默认)链接描述文件。如果您希望链接器脚本 扩展 默认值,请在不使用 -T
选项的情况下传递它(就像您使用附加目标文件一样)。
这样,一切都应该按预期进行。