【问题标题】:Running a container's ELF file without container在没有容器的情况下运行容器的 ELF 文件
【发布时间】:2019-04-05 09:53:09
【问题描述】:

我有一个类型为 ELF 的文件 ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, stripped 我想在普通的 linux 机器(不是容器)中运行

很遗憾,我在尝试执行时收到错误 No such file or directory

我最终想调试所说的 ELF,而且在容器中会更难。

在谷歌上搜索了几个小时,但找不到简单的解决方案。

【问题讨论】:

  • 请注意,该文件是一个“共享对象”,它是一个共享库(也称为 DLL)。你不能执行它,你需要一个链接到库的程序(“可执行”)。
  • 你是对的。有没有简单的方法来运行它?它甚至还有一个主要功能
  • 你不能“运行”一个图书馆,故事真的结束了。虽然库可能有一个main 函数,但它不像在可执行程序中那样特别,不会被自动调用。
  • @Someprogrammerdude 你错了:这是一个可执行文件,你可以运行它。

标签: linux containers elf


【解决方案1】:

ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, stripped

这个二进制文件链接到使用musl libc,它没有安装在你的系统上。

No such file or directory

这个错误有点令人困惑。缺少的不是您的二进制文件,而是它需要的 iterpreter (/lib/ld-musl-x86_64.so.1)。

也许可以将 musl 与现有的 GLIBC 并行安装,但我没有找到明确的是/否答案。

【讨论】:

  • 我最终在 Alpine 上运行它解决了问题
【解决方案2】:

musl 用于编译可移植的静态二进制文件。编译您尝试运行的程序时出现问题。标志 '--static' 应该已传递给已编译的程序,这将导致

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped

一个关于如何编译这样一个程序的例子:

CC=musl-gcc CFLAGS="--static" ./Configure
make

【讨论】:

    猜你喜欢
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多