【发布时间】:2019-04-10 00:56:05
【问题描述】:
我在 x86-64 机器上使用 shc 将 bash 脚本转换为可执行二进制文件。这在我的机器上运行良好,但我这样做的目的是将它推到 aarch64 机器上。将二进制文件复制到 aarch64 机器后,出现此错误:
无法执行二进制文件:执行格式错误
这似乎是由于二进制文件未格式化以在此操作系统上运行造成的。有谁知道可以给我一个可以在 aarch64 上执行的二进制文件的工具(似乎 shc 不能做到这一点)。
EDIT:文件命令将其打印出来(在 aarch 机器上):
ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接,解释器 /lib64/ld-linux-x86-64.so.2,用于 GNU/Linux 2.6.32,BuildID[sha1 ]=f6f72e60c9ae8c2fd3abe5aa47f9ba6be7000be6,剥离
只需确认该文件适用于 x86-46
【问题讨论】:
-
应该在目标操作系统上构建组件(在任何地方编写一次编译)或选择不同的方法(一次编写在任何地方运行),即独立于平台的 java(以及其他)(在 Java Virtual 上执行)机器)。
-
为什么要在树莓派上使用 shc?您没有获得任何有意义的安全/机密性好处(通过使用除 ptrace 之外的任何系统调用跟踪机制来绕过 ptrace 规避“安全”模式是微不足道的),但结果执行起来要慢得多......并且在 Pi 上,您需要那种性能。
标签: linux bash compilation binary executable