确定可执行文件是否可以在当前机器上 运行

Determine if an executable can be run on current machine

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

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

在 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.