确定可执行文件是否可以在当前机器上 运行
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
.
我正在使用 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
.