Firefly开源社区

标题: 在单板上执行自己的程序报错 [打印本页]

作者: yuhuo1989    时间: 2015-5-10 21:43
标题: 在单板上执行自己的程序报错
我通过U盘挂载的方式将自己的app程序拷贝了单板下
  1. shell@rk3288:/data/local/test # ll
  2. -rwxrwxrwx root     root         8698 2011-01-01 13:26 test
  3. shell@rk3288:/data/local/test #
复制代码
程序名称是test。但怎么执行它呢?直接执行会报错,把文件当做了文件夹。请大神指点?
  1. shell@rk3288:/data/local/test # ./test
  2. sh: ./test: No such file or directory
  3. shell@rk3288:/data/local/test #
复制代码




作者: lr6410    时间: 2015-5-11 10:15
这种问题,有可能是编译器用得不对。

先在板上执行命令:file test,看看test是不是arm的程序,如果是的,你使用的什么编译器
应用程序用gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux编译是没问题的。你可以去linaro官网下载
作者: yuhuo1989    时间: 2015-5-11 19:03
lr6410 发表于 2015-5-11 10:15
这种问题,有可能是编译器用得不对。

先在板上执行命令:file test,看看test是不是arm的程序,如果是的 ...

单板上连file命令都没有,
  1. shell@rk3288:/data/local/test # file test
  2. sh: file: not found
复制代码
我用的交叉编译工具是“arm-linux-gnueabihf-gcc”,不知道对不对?

作者: yuhuo1989    时间: 2015-5-11 19:08
yuhuo1989 发表于 2015-5-11 19:03
单板上连file命令都没有,我用的交叉编译工具是“arm-linux-gnueabihf-gcc”,不知道对不对?

在我的PC机系统中下发“file test”
  1. wsf@ubuntu:~/share/firefly-rk3288_pad/test$ file test
  2. test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, BuildID[sha1]=0x888ea7ddcede1e3de0709381ecc6a2917070fed6, not stripped
复制代码

作者: yuhuo1989    时间: 2015-5-12 20:26
此问题已解决,特此结贴!

原因是板子上缺少动态库。编译成静态文件即可运行。

作者: busybee    时间: 2015-5-13 09:55
如果要移植程序放到 Android 上跑的话,有两种选择:
1 静态编译,就是楼主所用的方法。
2 用 Android NDK 编译。

用 arm-linux-gnueabihf-gcc 编译出来的动态链接的应用,只能在板子的 Ubuntu 系统下跑。
作者: yuhuo1989    时间: 2015-5-13 11:48
busybee 发表于 2015-5-13 09:55
如果要移植程序放到 Android 上跑的话,有两种选择:
1 静态编译,就是楼主所用的方法。
2 用 Android ND ...

还有一种尝试的方法,把动态库也一并拷入板子,然后修改PATH。不过这种方式我尝试失败。不知为什么




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1