【发布时间】:2011-04-19 17:20:53
【问题描述】:
我的问题和this question不一样。
我正在开发一个带有独立二进制文件的项目,该二进制文件没有动态/外部链接,并在 *nix 环境中运行。
我正在尝试使用更新的工具集进行构建,但旧工具集提供的一些静态库现在不可用 - 例如,提供 _start。
我一直在挖掘供应商工具集提供的文件,并从 crt 库中找到了一些包含我需要的符号的共享对象(例如,_start、_fini 等),但我不确定是否有一种直接的方法可以将共享对象静态链接到二进制文件中,并进一步使该二进制文件可执行。
短版:非共享对象二进制文件能否与共享对象静态链接,而结果不会成为另一个共享对象?
【问题讨论】:
-
您的原始独立二进制文件是静态链接的可执行文件吗?您能否详细说明您实际拥有什么以及您需要实现什么?
-
在原始项目中,使用旧工具集,有一些提供的(静态)库,当链接进来时,它会成为一个独立的可运行二进制文件。在较新的工具集中,其中一些东西作为静态库丢失了,但是有一些共享对象提供了这些符号。本质上我想知道的是,共享对象是否可以静态链接到独立的二进制文件中。
-
最后一个问题的最终答案是“否”。创建共享库时,静态链接所需的信息将不可挽回地丢失。
-
如果是这样的话......如果你想写出来,我会接受这个答案,感谢你提供一些关于丢失的信息。
标签: shared-libraries dynamic-linking static-linking