“-sh:无法执行二进制文件”,因为源代码是在“x86_64”上编译并在“i686”平台上执行的

“-sh:无法执行二进制文件”,因为源代码是在“x86_64”上编译并在“i686”平台上执行的

我需要运行一些 USB NCM 相关的测试用例,我已在 .c 文件中编写了一些测试代码。我已经使用 GCC 编译器从 Ubuntu 主机编译了 .c 文件,并尝试从设备的控制台运行,但出现“-sh:无法执行二进制文件”错误。设备端我们没有安装 GCC。

uname -a 命令给出以下 o/p,

> Host:

    4.4.0-31-generic Ubuntu x86_64

> Device:

    3.14.55-yocto-standard #1 SMP PREEMPT Fri Oct 12 13:34:50 CEST 2018 i686 GNU/Linux

我了解主机和设备之间存在环境差异。无论如何,我需要在设备端控制台中编译并执行 .c 文件。

答案1

x86_64 和 i686 指令集不一样(对于更多细节)。

使用此命令在主机上编译源代码:

 gcc -m32 -mtune=i686 source.c -o source  

如果出现这样的错误,fatal error: *.h : No such file or directory这意味着您没有合适的交叉编译库

 sudo apt install g++-multilib

并再次运行 gcc 命令

参考 :

GCC 手册页

相关内容