gpt4 book ai didi

c - 如何使共享库成为可执行文件

转载 作者:行者123 更新时间:2023-12-04 13:46:02 27 4
gpt4 key购买 nike

我正在寻找被问到的问题。我看到这个链接 https://hev.cc/2512.html这和我想要的完全一样。但没有解释发生了什么。我也很困惑,如果是的话,是否可以将没有 main() 的共享库设为可执行?我猜我必须提供 global main() 但不知道详细信息。非常感谢任何进一步的简单引用和指导

我正在使用内核 3.13 的 x86-64 64 位 Ubuntu

最佳答案

这从根本上是不明智的。

共享库通常没有可以使用的任务,因为它相当于 main()功能。主要目标是允许单独管理和实现公共(public)代码操作,并在以这种方式运行的系统上允许加载和共享单个代码文件,从而减少使用它的应用程序代码的内存开销。

可执行文件被设计为具有单个入口点,从该入口点执行与完成明确定义的任务相关的所有操作。不同的操作系统对该入口点有不同的要求。共享库通常没有类似的底层功能。

因此,为了(有用地)将共享库转换为可执行文件,您还必须定义(并为其生成代码)可以从单个入口点启动的任务。

您链接到的代码从库的源代码开始,并显式编码它通过入口点函数调用的 main()。如果您没有库的源代码,理论上您可以从共享库中破解一个新文件(在任何给定的操作系统中都没有防止这种情况的安全功能的情况下),但这将是一件奇怪的事情.

但实际上,您不会以这种方式部署代码。相反,您会将共享库编码为共享库。如果您想执行某些任务,您可以编写一个单独的可执行文件,该可执行文件链接到该库和代码。试图将两者联系在一起违背了编写库的目的,并扭曲了该库和应用程序的结构、实现和维护。将应用程序和库分开。

关于c - 如何使共享库成为可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com