我正在使用 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 中没有正确设置。