相机的 Linux 系统无法运行带有 './abcd' 的已编译 C 程序,而是将其识别为/bin/sh 脚本

标签 c linux cross-compiling

最近我开始用我的相机写一些脚本。我用 C 编写了一个简单的 hello world 程序,编译它并将它也发送到我的相机。

相机的系统是一个非常简单的 Linux 版本。运行 uname 得到 Linux,uname -r 得到 2.6.35。此系统上未安装 Bash。

当我执行任何 C 可执行文件时,它认为它是一个脚本,给我错误: ./helloworld: 第 1 行:语法错误:意外的“(”

如有任何帮助,我们将不胜感激。

最佳答案

我假设您在 64 位台式电脑上使用 gcc -o helloworld helloworld.c 之类的东西编译了 hello world 程序。

生成的二进制文件适用于 AMD64 架构(想想 Intel 64 位),不会在任何其他处理器类型上运行。 IE。它与使用 32 位 ARTPEC-3 处理器和 CRISv32 架构的目标系统(= 您的相机)不兼容。

这意味着您必须为相机的 CPU 交叉编译您的程序。检查例如http://developer.axis.com/wiki/doku.php%3Fid=axis:compiling_for_cris_howto.html这看起来是关于让您的第一个程序在您的相机上运行的非常好的教程。

关于相机的 Linux 系统无法运行带有 './abcd' 的已编译 C 程序,而是将其识别为/bin/sh 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40572352/

相关文章:

使用 gcc 和终端编译

编译器错误 : cannot convert char* to char

Meteor 和 C nopoll 应用程序之间的连接丢失

c++ - 使用自定义Makefile而不是qmake交叉编译Ubuntu-Win7

compiler-errors - 交叉编译 ARM 架构时出错

c - 防止进程在Linux上打开新的文件描述符,但允许通过套接字接收文件描述符

linux - 是否有可能在 linux 中找到哪个进程正在使用 OPENSSL?

c - 非缓冲标准输入读取

mysql - 在 Linux 机器上远程连接到 mysql 时出现问题

batch-file - Windows下交叉编译Golang程序时限制环境变量为command