无法在 Linux 目标上运行程序

无法在 Linux 目标上运行程序

我正在使用 Ubuntu 20.04。我在笔记本电脑上编写了一个简单的程序(Hello World)和一个 makefile,然后运行它(./Simple),一切正常。

然后我将程序(Simple.c)纳入交叉编译过程(我刚开始从事一个更大的项目)。Simple.c 就是这样的:

#include <stdio.h> 
int main(){
printf("Hello world \n"); 
return 0;}

构建成功了,我将其加载到目标上,然后使用串行端口连接到目标,并找到了我的 Simple 应该所在的文件夹,然后我尝试启动它(./Simple),但error:./Simple: line 1: syntax errir: unterminated quoted string. 删除 printf 和 #include 后,我不断收到错误消息。我还收到一条错误消息

# ./Simple
./Simple: line 1: syntax error: unexpected "(".

我不知道为什么我无法运行在我的 Ubuntu 上没有问题地运行的程序,并且在交叉编译期间没有报告错误。

另外,目标是Realtek的RTL8685。PC上的文件命令的结果是:

#file ./Simple
./Simple: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2 for GNU/Linux 3.2.0, not stripped

目标上的文件命令的结果是:

#file ./Simple
/bin/sh: file: not found

答案1

正如@steeldriver 所说,问题在于可执行文件不适用于目标系统,因为交叉编译器在 makefile 中没有正确设置。

相关内容