我已经在x86-64机器上使用shc将bash脚本转换为可执行二进制文件。这在我的机器上运行良好,但是我打算将其推送到aarch64机器上。将二进制文件复制到aarch64计算机后,出现此错误:
无法执行二进制文件:Exec格式错误
这似乎是由于二进制文件未格式化为在此OS上运行而引起的。有谁知道一个工具,该工具会给我一个可以在aarch64上执行的二进制文件(似乎shc可以做到这一点)。
编辑:file命令将其打印出来(在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
答案 0 :(得分:1)
简短的答案是在目标操作系统上编译二进制文件。在man
页上:
shc 本身不是cc之类的编译器,而是对Shell脚本进行编码和加密,并生成具有附加到期功能的C源代码。然后,它使用系统编译器来编译行为完全类似于原始脚本的剥离二进制文件。
编译产生一个包含机器代码的目标文件。机器代码“可以被视为编译或组装的计算机程序的最低层表示,或被视为原始的和硬件相关的编程语言”(参考https://en.wikipedia.org/wiki/Machine_code)。在SunOS 11.3 SPARCv4上编译源代码产生的机器代码将不包含与在AIX PowerPC8上编译相同源代码产生的机器代码相同的指令。
答案 1 :(得分:0)
感谢masseyb。看到您的评论时,我只是在尝试。现在,我已经在arm机器上使用了编译器。