有时候我们执行某个二进制可执行文件,会有下面的提示:
-bash: /bin/ts_print_mt: cannot execute binary file: Exec format error
这种情况一般情况下是由于二进制可执行文件的目标运行平台的架构不对造成的,这个时候我们可利用file 命令查看二进制文件的架构:
第1个例子:
命令如下:
file /home/book/usedlib/tslib-1.21/tmp/bin/ts_test_mt
输出结果如下:
/home/book/usedlib/tslib-1.21/tmp/bin/ts_test_mt: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=f66615ac54108f25899f3c479eecbb49c71039de, not stripped
可见,它是运行于x86-64
架构平台上的二进制可执行文件,并且是需要动态库的支付才能运行的。
第2个例子
命令如下:
file touchscreen_test01
输出结果如下:
touchscreen_test01: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 4.9.0, with debug_info, not stripped
这就是运行于ARM架构平台上的二进制可执行文件了。