xCamel 发表于 2014-6-18 18:39:01

DS-5编译的arm-linux程序无法运行

本帖最后由 xCamel 于 2014-6-18 18:49 编辑

各位前辈,小弟最最近刚学arm-linux嵌入式开发,为了方便,选择在熟悉的Windows平台上进行开发。使用的开发环境是ds-5,按照
这个http://www.myir-tech.com/resource/497.asp方法,想生成一个可在开发板中Linux运行的程序,将编译好的程序上传到开发板上
运行时,却提示line: 1: Syntax error: word unexpected (expecting ")"),请问这是出现了什么问题,应当如何解决

注:我使用的开发板是友善之臂的mini2440开发板。

LearningASM 发表于 2014-6-18 19:33:12

呃呃呃,能贴个代码出来吗?

xCamel 发表于 2014-6-18 19:40:02

LearningASM 发表于 2014-6-18 19:33
呃呃呃,能贴个代码出来吗?

就一个打印出Hello World的程序,程序时没有问题的,编译是成功的

dhbighead 发表于 2014-6-18 19:55:32

用file命令查看下编译出来的文件 应该还是X86的吧?

xCamel 发表于 2014-6-18 21:05:35

dhbighead 发表于 2014-6-18 19:55
用file命令查看下编译出来的文件 应该还是X86的吧?

使用的是这个arm-linux-gnueabihf-gcc.exe编译器编译的,只在在命令提示符中,调用这个程序编译了源程序,能编译通过生成可执行文件,但是也没法在开发板中运行。

ywhbn 发表于 2014-6-18 21:31:11

如果是用ftp把可执行文件传到开发板,要把ftp软件里的default file type设置为binary

xCamel 发表于 2014-6-18 21:38:05

ywhbn 发表于 2014-6-18 21:31
如果是用ftp把可执行文件传到开发板,要把ftp软件里的default file type设置为binary ...

我是直接用Eclipse一个自带的ftp工具上传的,在Linux系统中用过,没有问题的

ywhbn 发表于 2014-6-18 21:43:52

xCamel 发表于 2014-6-18 21:38
我是直接用Eclipse一个自带的ftp工具上传的,在Linux系统中用过,没有问题的 ...

Windows和Linux里的ftp软件对没有后缀的文件判别方式不一样,一个认为是binary,另外一个认为是ascii。可以试试压成.zip或者.gz再传

xCamel 发表于 2014-6-18 22:17:12

ywhbn 发表于 2014-6-18 21:43
Windows和Linux里的ftp软件对没有后缀的文件判别方式不一样,一个认为是binary,另外一个认为是ascii。可 ...

有后缀名的,后缀名为.out 。

SNOOKER 发表于 2014-6-18 22:22:29

file hello看一下。。

xCamel 发表于 2014-6-18 22:39:51

SNOOKER 发表于 2014-6-18 22:22
file hello看一下。。

这是file的结果:
a.out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, BuildID=6224e0b788fef36e07fad31da269d62fbe437653, not stripped

SNOOKER 发表于 2014-6-19 20:24:14

xCamel 发表于 2014-6-18 22:39
这是file的结果:
a.out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked ...

这个没错的,直接拷到板上运行之

sys_suweixiao 发表于 2014-6-20 10:21:09

有可能是库问题,静态编译试试。

xCamel 发表于 2014-6-20 13:41:42

SNOOKER 发表于 2014-6-19 20:24
这个没错的,直接拷到板上运行之

运行不了的,就出现了之前我提的问题。我不知道是不是交叉编译器版本的问题,友善之臂提供的编译器版本是
4.4.3 。而DS-5的交叉编译器是4.7.2。 会不会是编译器版本的问题?开发板的内核是2.6

xCamel 发表于 2014-6-20 13:42:38

sys_suweixiao 发表于 2014-6-20 10:21
有可能是库问题,静态编译试试。

已经试过用静态库,依旧还是出现了相同的问题。会不会是交叉编译器的版本问题?

SNOOKER 发表于 2014-6-20 23:06:30

xCamel 发表于 2014-6-20 13:41
运行不了的,就出现了之前我提的问题。我不知道是不是交叉编译器版本的问题,友善之臂提供的编译器版本是 ...

还是装个虚拟机吧

xCamel 发表于 2014-6-21 21:55:49

SNOOKER 发表于 2014-6-20 23:06
还是装个虚拟机吧

在Ubuntu系统中的DS-5编译的程序也不能在2440开发板中运行。

bruce_helen 发表于 2014-6-27 08:52:14

本帖最后由 bruce_helen 于 2014-6-27 08:53 编辑

是不是程序权限的原因。
我的开发板使用rz命令通过串口传输程序到开发板,传输完成后程序的权限被改了。
直接执行跟你的错误是一样的。
仔细看看我的截图



图看不了,贴命令行
root@freescale /$ cd /home/bruce/sqlite/
root@freescale /home/bruce/sqlite$ ls
sqlite_arm   sqlite_test.db
root@freescale /home/bruce/sqlite$ ls -l
total 788
-rwxrwxrwx    1 root   root         12114 Jun 262014 sqlite_arm
-rw-r--r--    1 root   root      787456 Jan11970 sqlite_test.db
root@freescale /home/bruce/sqlite$ rm sqlite_arm
root@freescale /home/bruce/sqlite$ ls
sqlite_test.db
root@freescale /home/bruce/sqlite$ rz
rz ready. Type "sz file ..." to your modem program

Starting zmodem transfer.Press Ctrl+C to cancel.
Transferring sqlite_arm...
100%      11 KB      11 KB/sec    00:00:01       0 Errors

rz 3.48 01-27-98 finished.
root@freescale /home/bruce/sqlite$
root@freescale /home/bruce/sqlite$
root@freescale /home/bruce/sqlite$ ls
sqlite_arm      sqlite_test.db
root@freescale /home/bruce/sqlite$ ./sqlite_arm
-/bin/sh: ./sqlite_arm: Permission denied
root@freescale /home/bruce/sqlite$ sh -x ./sqlite_arm
./sqlite_arm: line 1: syntax error: unexpected word (expecting ")")
root@freescale /home/bruce/sqlite$ ls -l
total 788
-rw-r--r--    1 root   root         12086 Jun 272014 sqlite_arm
-rw-r--r--    1 root   root      787456 Jan11970 sqlite_test.db
root@freescale /home/bruce/sqlite$ chmod 777 sqlite_arm
root@freescale /home/bruce/sqlite$ ./sqlite_arm
Result: name=1001, occ=256
Result: name=1002, occ=256
Result: name=1003, occ=256

xCamel 发表于 2014-10-3 12:22:07

bruce_helen 发表于 2014-6-27 08:52
是不是程序权限的原因。
我的开发板使用rz命令通过串口传输程序到开发板,传输完成后程序的权限被改了。
直 ...

权限是没有问题的

Cavsle 发表于 2015-7-30 22:55:03

xCamel 发表于 2014-10-3 12:22
权限是没有问题的

EABI不兼容的可能性最大,DS-5的arm-linux-gnueabihf默认的是hard float ,你去查一查就知道了。

licheng0620 发表于 2015-7-31 10:27:49

应该是交叉编译器版本的问题,如果板子内核编译使用gcc 4.4.3,而DS-5编译器是4.7.2,是不能在板子上运行的

yuanzhengrong 发表于 2015-8-7 12:05:00

用 readelf-h a.out 命令查看一下elf的文件头。
页: [1]
查看完整版本: DS-5编译的arm-linux程序无法运行