【问题标题】:Determine if an executable can be run on current machine [duplicate]确定可执行文件是否可以在当前机器上运行[重复]
【发布时间】:2015-07-31 04:38:24
【问题描述】:

我正在使用 Docker 构建我的二进制文件,因此结果是 Linux 可执行格式。但是有时,我想重新构建二进制文件并在 OS X 机器(或 BSD)上运行它们。

有没有办法使用/bin/bash 来确定可执行文件的格式是否适合当前运行的机器,以便我可以根据需要自动重建它们

【问题讨论】:

  • 在 OSX 上你可以使用otool -L /path/to/excutable。在 Linux 上,您可以使用 ldd -r /path/to/executable
  • @alvits 您应该将其发布为答案。
  • 构建两个二进制文件并标记它们并为每个目标机器类型获取/使用正确的一个?
  • 我不同意总是重建你的二进制文件更简单,但你可以做你想做的。

标签: bash executable


【解决方案1】:

在 OS X 上,您可以使用 otool 来检查可执行文件。 -L 开关显示目标文件使用的共享库的名称和版本号,如果文件是共享库,则显示共享库 ID。

otool -L /path/to/executable

示例输出如下所示:

/bin/ls:
    /usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)

在 Linux 上,您可以使用 ldd。这相当于 OS X otool

ldd -r /path/to/executable.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2015-01-24
    • 2018-10-13
    • 2011-11-11
    相关资源
    最近更新 更多