CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 12750|回复: 9

交叉编译后的C语言程序怎么运行?

[复制链接]
发表于 2013-7-18 16:13:10 | 显示全部楼层 |阅读模式
小程序test.c 源码
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         printf("hello cubieboard!");
  5.         return 0;
  6. }
复制代码
gcc -o test test.c 编译得到test
运行./test 得到输出hello cubieboard!
再交叉编译 arm-none-linux-gnueabi-gcc -o cbtest test.c
得到cbtest.
经过串口在CB A10 的安卓系统上运行
  1. root@android:/mnt/usbhost0/8188eu_USB_linux # <font color="Blue">ls -l cbtest</font>
  2. ----rwxr-x system   media_rw     5042 2013-07-18 15:28 cbtest
  3. root@android:/mnt/usbhost0/8188eu_USB_linux # <font color="Blue">./cbtest</font>
  4. sh: ./cbtest: cannot execute - Permission denied
复制代码
作为一个root 用户,我只好chmod
  1. 126|root@android:/mnt/usbhost0/8188eu_USB_linux # <font color="Blue">chmod 777 cbtest</font>
  2. 127|root@android:/mnt/usbhost0/8188eu_USB_linux # ls -l cbtest
  3. ----rwxr-x system   media_rw     5042 2013-07-18 15:28 cbtest
  4. root@android:/mnt/usbhost0/8188eu_USB_linux #
复制代码
chmod 都没有用?这是什么情况!
我只好再试试
  1. 127|root@android:/mnt/usbhost0/8188eu_USB_linux # busybox cp cbtest /sdcard
  2. root@android:/mnt/usbhost0/8188eu_USB_linux # cd /sdcard
  3. root@android:/sdcard # ls
  4. LOST.DIR
  5. cbtest
  6. home
  7. 127|root@android:/sdcard # ./cbtest
  8. sh: ./cbtest: cannot execute - Permission denied
  9. 126|root@android:/sdcard # ls -l
  10. drwxrwxrwx root     root              1980-01-01 00:00 LOST.DIR
  11. -rwxrwxrwx root     root         5042 1970-01-02 08:17 cbtest
  12. drwxrwxrwx root     root              1980-01-01 00:00 home
  13. root@android:/sdcard #
复制代码
都自动变成777的权限,还不可运行,简直要逆天!{:soso_e153:}
回复

使用道具 举报

发表于 2013-7-19 08:47:26 | 显示全部楼层


你试着将你的可执行程序放到/data文件夹下执行!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-19 19:25:27 | 显示全部楼层
f839903061 发表于 2013-7-19 08:47
你试着将你的可执行程序放到/data文件夹下执行!

也不行,是不是交叉编译有问题,还是已经不支持C语言了,sheel脚本还是可以运行的。虽然这不影响我的工作,但这很让人好奇!
以下是在putty中运行的情况:
  1. pwd
  2. /data
  3. ./cbtest
  4. /dev/ttyS0[8]: ./cbtest: No such file or directory
  5. busybox ./cbtest
  6. cbtest: applet not found
  7. cbtest
  8. /dev/ttyS0[10]: cbtest: not found
复制代码
真是各种手段都奈何不了它!{:soso_e154:}
回复 支持 反对

使用道具 举报

发表于 2013-7-22 08:56:57 | 显示全部楼层
yzbx 发表于 2013-7-19 19:25
也不行,是不是交叉编译有问题,还是已经不支持C语言了,sheel脚本还是可以运行的。虽然这不影响我的工作 ...

我看的eoe教学视频,里面说在data里面是可以的,因为这一块是用户空间
回复 支持 反对

使用道具 举报

发表于 2013-7-28 15:25:22 | 显示全部楼层
如果不经过java的本地调用,而直接在android里面运行linux c的程序,请以这个格式编译。
arm-linux-gcc test.c -static -o test
说明:
虽然android是linux的一个文件系统,但是android当中的库与纯linux中的库是不同的。google自己重新实现了一遍C库,而linux用的还是glibc等已经成熟的库。
编译的时候,所以就必须自己带着自己需要的库。当然,如果利用android NDK的方法,你的C代码将会直接调用google实现的那个库。

评分

参与人数 2威望 +10 金钱 +10 贡献 +10 收起 理由
f839903061 + 5 + 5 + 5 赞一个!
yzbx + 5 + 5 + 5 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2013-7-28 15:27:30 | 显示全部楼层
而如果不静态编译,也不经过android NDK 来进行编译,那就正如你的错误:找不到文件目录。
回复 支持 反对

使用道具 举报

发表于 2013-7-29 13:45:09 | 显示全部楼层

楼上的比我快了一步!
今天上午刚测试完了,得到的结论就是一定要添加  -static
下午就看到       @醉月      的回复!除了苦笑还是苦笑

http://goo.gl/oAzVEY

评分

参与人数 1威望 +5 金钱 +5 贡献 +5 收起 理由
yzbx + 5 + 5 + 5 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2013-7-29 14:23:32 | 显示全部楼层
f839903061 发表于 2013-7-29 13:45
楼上的比我快了一步!
今天上午刚测试完了,得到的结论就是一定要添加  -static
下午就看到       @醉月 ...

我前周一直在研究怎么在android上控制 CB的GPIIO口的电压,各种情况都遇到了,所以,LZ的问题我也遇到了~~~~
回复 支持 反对

使用道具 举报

发表于 2014-8-19 16:05:14 | 显示全部楼层
mark, 真是好贡献
回复 支持 反对

使用道具 举报

发表于 2014-11-17 21:25:06 | 显示全部楼层
好,收藏
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-27 17:44 , Processed in 0.023344 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部