创建静态二进制


14

我安装了一个应用程序[例如fdisk]。但是它需要执行库。我正在寻找实用程序/工具,它将帮助我从安装的二进制文件创建静态二进制文件。这样我就可以在任何地方使用它。

我找到的唯一可靠的工具是ErmineLight这里开始的,但这是共享软件。

是否有可用的开源软件?

EDIT fdisk只是一个例子。我大部分时间都在LFS上工作,因此,如果必须使用任何实用程序,我需要按照以下步骤进行操作:

  1. 下载源码
  2. 配置
  3. 使
  4. 做测试
  5. 进行安装,

因此,为了节省时间,我正在寻找一种解决方案,其中将使用debian,fedora或其他发行版制作静态二进制文件,并在LFS上进行尝试,如果可以正常运行或按照我的要求运行,我将附带源代码进行编译。


1
目标是否易于转移(即放在USB上,随处理器架一起随身携带)?
Mike Pennington

Answers:


15

如果fdisk只是一个示例,而您的目标实际上是从动态可执行文件制作静态可执行文件,请尝试Elf statifier。甚至还有与Ermine比较(由Ermine供应商提供,因此请注意(非)emptor)。注意

  • 如果您有许多可执行文件,它们的组合大小可能会大于动态链接的可执行文件加上必需的动态库的组合大小。
  • GNU libc的某些功能可能无法在静态链接的可执行文件中使用,例如NSS(用户名,主机名等的数据库)以及与语言环境相关的功能。

如果您的目标是拥有一个小型便携式系统工具套件,那么您正在寻找BusyBox,这是一组旨在用于嵌入式系统(包括fdisk)的核心工具。您可能还对比 Glibc小的标准库感兴趣,例如DietlibcµClibc


1
我尝试了Elf statifier,但令我惊讶的是。它不起作用。它存在段错误。我用许多实用程序尝试了很多发行版本。
SHW

1
它可能会针对地址随机化进行分段
Rmano 2014年

0

好吧...这似乎是个坏主意。但是,有可能。

由于fdisk是开源的,因此只需获取其源代码,然后查看Makefile。您应该找到一个在编译时将“ -static”传递给gcc的选项。

我不是C / C ++专家,但据我所知,不可能从现有的动态链接二进制文件创建静态链接二进制文件。

如果您想在任何地方使用它,我建议您使用一个很小的维护分发版,该分发版可以在几秒钟内启动,并让您修改所有内容。

这对我来说更有意义,因为您可能要修改运行Linux / UNIX安装的磁盘。


您的回答似乎矛盾,您说“ ...非常糟糕的主意。但是,这是可能的”,然后又说“ ...不可能从现有的动态链接的二进制文件创建静态链接的二进制文件”。请澄清您的答案,这将是最有帮助的。
JM Becker 2012年

@TechZilla:每个tiktak都可以创建静态二进制文件,只是不能从现有的动态链接二进制文件创建一个二进制文件。但是,请参见已接受的答案以了解某些可能的能力。[注意:评论的目的不只是批评这里的内容,而是给以后的读者更多。]
lindes

-3

您还可以使用ELFex Linker,它是我刚刚发现的一个非常酷的程序,它的gui并可以从动态可执行文件创建静态可执行文件。


链接无效。
2015年

Link对我有用,似乎可以直接回答问题。我建议这不是垃圾邮件。
roaima

该链接对我有用。该页面包含您可能会从专业程序员的工作中预期到的错别字/语法/编辑错误的数量,该数量比您从专业网站所期望的数量要多,但比网络钓鱼电子邮件的数量要少。与上述帖子大致相同,请考虑一下。似乎这个新用户会及时加入Stack Exchange,以发布指向似乎是一个新网站的链接,这似乎很可疑。
G-Man说'恢复莫妮卡'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.